我一直在使用postgresql
进行全文搜索,将文章列表与包含特定单词的文档进行匹配。性能随着数量的增加而降低。的行。我一直使用postgresql
支持全文搜索,这使得性能更快,但随着时间的推移,随着文章的增加,搜索速度变慢。
我刚刚开始使用solr
进行搜索。通过网络上的各种资源,我发现它可以做更多的事情,而不是搜索,让我更好地控制我的结果。
Solr
似乎使用inverted index
,如果许多文档(超过100万)包含用户开始查询的搜索字词,性能会降低 ?此外,如果我通过搜索术语的分页限制结果,在计算文档的score
时,是否需要先加载所有100万个文档然后限制结果会降低性能许多文件都有相同的词?
首先可以通过分数对索引进行排序,以避免以后加载文档吗?
答案 0 :(得分:0)
Lucene旨在解决您提到的所有问题。除了倒排索引外,还有发布列表,docvalues,索引和存储值的分离等。
然后你有Solr在其上面添加更多好东西。
100万份文件是Lucene / Solr的入门级问题。它正在对索引Wikipedia转储进行常规测试。
如果您认为自己确实需要了解它是如何工作的,而不仅仅是放心,请查看Lucene上的书籍,包括旧书。还要检查Lucene Javadocs - 它们通常还有其他信息。