【问题标题】:index size impact on search speed (to store or not to store)索引大小对搜索速度的影响(存储或不存储)
【发布时间】:2012-01-11 14:36:43
【问题描述】:

现在,我们使用 Solr 作为全文索引,文档的所有字段都被索引但不存储。 有几百万个文档,索引大小为 50 GB。平均查询时间约为 100 毫秒。

要使用突出显示等功能,我们正在考虑:附加存储文本。但是,这可能会使索引文件的大​​小增加一倍。

我知道索引大小和查询时间之间绝对没有(线性)关系。将文档提高 10 倍时,查询时间几乎没有差异。

但是,系统 (Solr/Lucene/Linux/...) 必须处理更多信息 - 索引文件(例如)基于更多的 I 节点,等等。

所以我敢肯定,与索引大小相关的查询时间会产生影响。 (但是:这很明显吗?)

第一个: 你觉得,我是对的吗? 对于有/没有存储文本的索引大小和搜索速度,您有任何经验吗? 通过存储文档来炸毁索引是否明智合理?

第二: 你知道 Solr/Lucene 是如何处理存储文本的吗?也许在单独的文件中? (这样对于不需要存储文本的简单搜索没有影响!?)

谢谢。

【问题讨论】:

  • 请问我的回答是否有用?您还在寻找其他东西吗?
  • 我写这个问题是为了了解索引大小对搜索速度的影响——可能来自有实践经验的人。所以“我不认为”并不能帮助我。你到 lucene 文件文档的链接很有用。
  • 嗯,我确实有实践经验,而且我在存储字段时从来没有遇到过性能问题,而我也遇到过大小问题。此外,该链接证明存储字段不会降低性能。这不能回答你的问题吗?

标签: performance solr lucene


【解决方案1】:

是的,如果您存储大字段,索引会增长,这是绝对正确的,但如果您想突出显示它们,您没有其他方法。我认为速度不会降低那么多,可能只是因为您需要下载更多的数据检索结果,但这并不重要。

关于lucene索引格式和索引中的不同文件大家可以看看here:存储的字段是存储在特定文件中的。

【讨论】:

  • 如果你想高亮,你不必存储,你可以从你的数据库中获取原始内容并重新分析原始内容,然后高亮。
  • 当然,如果你有一个 db.我不确定性能方面的成本是多少。我的意思是,如果您已经有一个包含所需数据的数据库,它可以节省文件系统的空间,但可能比在性能方面存储字段更糟糕。
  • 您每次都必须重新分析,这就是权衡。存储字段不应影响搜索性能,因为它们无论如何都会转到不同的文件。不知道复合索引格式是否如此..
  • @milan 重新分析原始文本以实现在 Solr/Lucene 外部突出显示是我们现在正在做的事情。问题是,实际上不可能在 Solr/Lucene 之外创建有效的突出显示,因为您必须像 solr 一样处理术语,包括同义词、词干等。因此,您必须在应用程序端重建 solr 类型的突出显示,这是一个非常大的挑战 - 它永远不会达到 100% 相同的结果。
  • 那么,如果您担心性能,请继续!存储这些字段! :-)
猜你喜欢
  • 2020-07-03
  • 1970-01-01
  • 1970-01-01
  • 2012-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
相关资源
最近更新 更多