【问题标题】:Solr reducing search timeSolr 减少搜索时间
【发布时间】:2015-09-17 06:43:40
【问题描述】:

我是 Solr 的新手。我已经索引了一个包含大约 14 列的 SQL Server 表,在 Solr 中包含 3000 万条记录。索引最多大约需要 15 分钟。我存储所有字段。这样我就不用回sql server去查询了。基本上我使用 solr 作为数据库并直接搜索它。没有唯一键,但我只索引了我搜索的 1 列。 此列将始终只包含 1 个单词。

对该列的每次搜索不会产生超过 200 条记录。在响应标题中 - 对于每个新的搜索文本 - 我可以看到 QTime 有时为 150、200、1350 毫秒。我想把这个时间缩短到 50 毫秒以内。

“响应头”:{ “状态”:0, “QTime”:150 },

我可以通过一些小的配置更改来做到这一点而无需分片吗? 编辑添加: 我正在使用 Solr 5.3.0。我不排序或使用构面等。我的架构 XML 是:

<fields>        
    <field name="Postcode"                          type="string" indexed="true" stored="true" required="true" />        
    <field name="PostTown"                          type="string" indexed="false" stored="true" required="true" />              
    <field name="DependantLocality"                 type="string" indexed="false" stored="true" required="false" />
    <field name="DoubleDependantLocality"           type="string" indexed="false" stored="true" required="false" />
    <field name="ThoroughfareName"                  type="string" indexed="false" stored="true" required="false" />
    <field name="ThoroughfareDescriptor"            type="string" indexed="false" stored="true" required="false" />
    <field name="ApprovedAbbreviation"              type="string" indexed="false" stored="true" required="false" />
</fields>

我已经索引了邮政编码,目前我只通过 Solr 管理网站搜索:邮政编码:WA168GS

谢谢。

【问题讨论】:

  • 信息太少。你的 schema.xml 怎么样?你的 solrconfig.xml 怎么样?您使用的是哪个版本的 Solr?你具体是怎么查询的?查询时是否排序?提交查询时,您是否使用其他功能(方面,更像这样等)?
  • 快速查询如何,慢查询如何?可能您的问题与deep paging 有关,可以通过proper pagination 解决。
  • 嘿@Mihir,请编辑您的帖子并将schema.xml 部分等信息写入您的问题正文。这样阅读起来更容易、更愉快:)

标签: sql-server performance solr


【解决方案1】:

solr 查询的性能取决于几个因素。

  1. 在启动 solr 服务器时提供给 JVM(堆)的内存量。现在来了,如何使用这个内存。 Solr 为您提供三种不同类型的缓存来缓存以前的搜索结果。
    • filterCache : 存储 Solr 构建的过滤器,以响应添加到查询的过滤器。如果您使用fq=category:apparel 之类的过滤器参数搜索velvet pants,Solr 将为该类别构建一个过滤器并将其添加到其缓存中。
    • queryResultCache :存储查询返回的文档 ID 集。
    • documentCache : 这个缓存保存 Lucene Document 对象(每个文档的存储字段)。

因此,当您使用term 和一些过滤器参数进行查询时,solr 会在内部进行两次搜索,一次用于实际术语,另一次用于您提供的每个过滤器条件。然后合并结果。如果任何部分已经在缓存中可用,那么它将直接从那里使用它。 sizeinitialSizeautowarmCount 参数应配置为您获得快速结果。你可以在这里找到更多关于solr cache的信息。

  1. 您应该在autoCommit 配置中将openSearcher 标志保留为false。因为每次发生硬提交时它都会打开一个新的索引搜索器实例。您应该使用 autoSoftCommit 配置将新索引加载到搜索器中,而不是硬提交。

您需要使用这些参数来调整 solr 以实现快速搜索查询。

【讨论】:

  • 谢谢大家!!!在 Solr 中处理很多事情还有很长的路要走。会及时通知您。
猜你喜欢
  • 2017-02-15
  • 2014-04-29
  • 2021-06-09
  • 2021-08-23
  • 2021-11-28
  • 1970-01-01
  • 2016-09-08
  • 2012-05-19
  • 1970-01-01
相关资源
最近更新 更多