Lucene 中大型文档的索引性能

Index performance for large # documents in Lucene

我一直在使用 postgresql 进行全文搜索,将文章列表与包含特定词的文档进行匹配。随着编号的增加而降低的性能。的行。我一直在使用 postgresql 对全文搜索的支持,这使性能更快,但随着时间的推移,随着文章的增加,搜索速度变慢了。

我刚开始使用 solr 进行搜索。通过网上的各种资源,我发现它可以做的不仅仅是搜索,还可以让我更好地控制我的结果。

Solr 似乎使用 inverted index,如果许多文档(超过 100 万)包含搜索词,性能不会随着时间的推移而降低开始被用户查询?此外,如果我通过搜索词的分页来限制结果,同时计算文档的 score,是否需要先加载所有超过 100 万个文档,然后限制会降低性能的结果许多文件有相同的词?

有没有办法首先按分数本身对索引进行排序,从而避免以后加载文档?

Lucene 就是为了解决你提到的所有问题而设计的。除了倒排索引,还有posting lists、docvalues、索引和存储值分离等。

然后您可以在上面添加 Solr 以添加更多好东西。

而 100 万个文档是 Lucene/Solr 的入门级问题。它正在对维基百科转储的索引进行例行测试。

如果您觉得您确实需要了解它是如何工作的,而不是仅仅放心,请查看有关 Lucene 的书籍,包括旧的。还要检查 Lucene Javadocs——它们通常有额外的信息。