【发布时间】:2015-03-18 14:18:06
【问题描述】:
我一直在使用postgresql 进行全文搜索,将文章列表与包含特定单词的文档进行匹配。性能随着数量的增加而下降。的行。我一直在使用postgresql 支持全文搜索,这使性能更快,但随着文章的增加,随着时间的推移导致搜索速度变慢。
我刚刚开始使用solr 进行搜索。通过网络上的各种资源,我发现它可以做的不仅仅是搜索,还可以让我更好地控制我的结果。
Solr 似乎使用inverted index,如果许多文档(超过 100 万)包含用户开始查询的搜索词,性能会随着时间的推移而降低吗?此外,如果我通过搜索词的分页来限制结果,同时计算文档的score,是否不需要先加载所有超过 100 万个文档,然后限制结果,这会降低许多性能有相同单词的文档?
有没有办法首先按分数对索引进行排序,这样可以避免以后加载文档?
【问题讨论】:
-
“它需要先加载所有超过 100 万个文档”是什么意思?它在搜索或排序过程中不加载任何文档
-
它不需要加载所有文档或计算
scoring,其中包括一百万个因素idf (inverse document frequency)、coord factor? -
您希望在索引中存储什么分数?对于哪个查询?您想预先计算所有可能查询的所有可能分数并存储它们吗?仅使用 10 个不同的单词,这将导致 3.628.800 个具有不同分数的不同查询...
标签: solr elasticsearch lucene full-text-search