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——它们通常有额外的信息。
我一直在使用 postgresql
进行全文搜索,将文章列表与包含特定词的文档进行匹配。随着编号的增加而降低的性能。的行。我一直在使用 postgresql
对全文搜索的支持,这使性能更快,但随着时间的推移,随着文章的增加,搜索速度变慢了。
我刚开始使用 solr
进行搜索。通过网上的各种资源,我发现它可以做的不仅仅是搜索,还可以让我更好地控制我的结果。
Solr
似乎使用 inverted index
,如果许多文档(超过 100 万)包含搜索词,性能不会随着时间的推移而降低开始被用户查询?此外,如果我通过搜索词的分页来限制结果,同时计算文档的 score
,是否需要先加载所有超过 100 万个文档,然后限制会降低性能的结果许多文件有相同的词?
有没有办法首先按分数本身对索引进行排序,从而避免以后加载文档?
Lucene 就是为了解决你提到的所有问题而设计的。除了倒排索引,还有posting lists、docvalues、索引和存储值分离等。
然后您可以在上面添加 Solr 以添加更多好东西。
而 100 万个文档是 Lucene/Solr 的入门级问题。它正在对维基百科转储的索引进行例行测试。
如果您觉得您确实需要了解它是如何工作的,而不是仅仅放心,请查看有关 Lucene 的书籍,包括旧的。还要检查 Lucene Javadocs——它们通常有额外的信息。