【问题标题】:Index performance for large # documents in LuceneLucene 中大型 # 文档的索引性能
【发布时间】: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


【解决方案1】:

Lucene 旨在解决您提到的所有问题。除了倒排索引,还有发布列表、文档值、索引值和存储值分离等。

然后你有 Solr 在上面添加更多好东西。

100 万个文档对于 Lucene/Solr 来说是一个入门级问题。它正在对 Wikipedia 转储索引进行例行测试。

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

【讨论】:

  • 谢谢,我想fieldcache 加上各种其他商店功能就足以解决这些问题,我的意思是,一个术语有一百万个文档
猜你喜欢
  • 1970-01-01
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
  • 2015-05-06
  • 2015-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多