【问题标题】:How to improve the Solr "OR" query performance如何提高 Solr“OR”查询性能
【发布时间】:2013-06-30 14:50:13
【问题描述】:

现在,我有一项紧迫的任务是使用 solr 提高“OR”查询性能。 我在两台服务器上部署了 9 个带有 solr-cloud 的分片(每台服务器:16 核,32G RAM)。

总文档数:60,000,000,总索引大小:9G。

根据要求,我必须使用“OR”查询来获取结果。

查询词的平均数量约为15个。

“OR”查询的响应时间约为 1-2 秒(“AND”查询约为 30ms-40ms)。

我们的目标:提升50%,即每次查询最多500ms-1s。

文档将飙升至 80,000,000,但性能应保持在 500ms-1s 查询。

感谢任何建议或方法。提前致谢。

【问题讨论】:

  • 查询结果如何?
  • q=name:(T1 OR T2 OR T3 ....)
  • 名称字段是什么??细绳 ?文本 ??你可以使用 fq 来缓存结果吗?
  • 名称字段为文本。我们尝试查询为:q=name:(T1 OR T2 OR T3 ....)&fq=+name:T1,它几乎会提升50%(因为找到的文档的数量已经减少了。),但是,很难确定选择哪个词作为 T1。
  • 您是否需要在字段“名称”的内容中使用“T”,或者您可以将其去掉并将该字段设为数字吗?

标签: performance solr lucene


【解决方案1】:

您可以尝试使用 lucene-c-boost。在 C++ 中(通过 JNI)优化了某些 Apache Lucene 查询的实现,速度从 0 到 7.8 倍不等。 看 https://github.com/mikemccand/lucene-c-boost.

【讨论】:

  • 尽管对某些查询进行了高度指定,但它确实可以将性能提高近 2 倍。
【解决方案2】:

根据您是否可以在没有评分的情况下生存,您可能只想运行多个查询。 30-40 毫秒 * 15 => 450-600 毫秒。

缺点是你没有得到分数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 2013-08-03
    相关资源
    最近更新 更多