Solr 建议器近乎实时不可用

Posted

技术标签:

【中文标题】Solr 建议器近乎实时不可用【英文标题】:Solr suggester not available in near real time 【发布时间】:2015-04-08 17:18:08 【问题描述】:

我在通过 SOLR 建议器近乎实时地显示结果时遇到了一些麻烦。尽管,如果我尝试使用搜索处理程序,它可以正常工作以进行近乎实时的搜索。 如果我添加一个文档,我可以通过搜索处理程序在接近 rel 的时间内检索该文档,但是只有在我重新加载核心后,相同的记录才在建议器中可用。为什么会发生这种情况? 这是我在 solr-config.xml 中的建议者条目

  <searchComponent name="suggest" class="solr.SuggestComponent">
     <lst name="suggester">
      <str name="name">mySuggester</str>
      <str name="lookupImpl">FuzzyLookupFactory</str>      <!-- org.apache.solr.spelling.suggest.fst -->
      <str name="dictionaryImpl">DocumentDictionaryFactory</str>     <!-- org.apache.solr.spelling.suggest.HighFrequencyDictionaryFactory -->
      <str name="field">email</str>
      <str name="weightField">popularity</str>
      <str name="suggestAnalyzerFieldType">string</str>
    </lst>
  </searchComponent>
  <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
      <str name="suggest">true</str>
      <str name="suggest.count">10</str>
     <str name="suggest.dictionary">mySuggester</str>
    </lst>
    <arr name="components">
      <str>suggest</str>
    </arr>
  </requestHandler>

这是我的自动提交和软提交的条目(使用默认值)

<autoCommit> 
       <maxTime>$solr.autoCommit.maxTime:15000</maxTime> 
       <openSearcher>false</openSearcher> 
     </autoCommit>

<autoSoftCommit> 
       <maxTime>$solr.autoSoftCommit.maxTime:-1</maxTime> 
     </autoSoftCommit>

【问题讨论】:

【参考方案1】:

我无法近乎实时地为建议者获取结果的原因是我错过了这个属性

<str name="buildOnCommit">true</str>

希望这对其他人有所帮助。

【讨论】:

【参考方案2】:

引用 Lucidworks 指南:

“特别是,任何使用“DocumentDictionaryFactory”的版本在构建建议器时都会从字段存储的数据中读取原始数据!这意味着如果您已将 1M 文档添加到索引并开始构建,则每个文件必须: 从磁盘读取 被解压 被合并到建议者的数据结构中。 这样做的结果是配置中指定的字段必须在您的模式中设置了 stored=”true”。 可以想象,这可能需要一段时间,而且不能轻易完成。 “一会儿”在 Mac Pro 上 11M 文档***转储上几乎是 10 分钟。”

知道: ““buildOnStartup”参数应该设置为“false”。真的。这会导致非常长的启动时间,在非常大的索引上需要很多分钟。你真的想重新读取、解压缩和添加每个文档中的字段每次启动 Solr 时都给建议者!可能不会,但如果你愿意,你可以。 “buildOnCommit”参数应设置为“false”。真的。您是否真的想在每次提交时重新阅读、解压缩并将每个文档中的字段添加到建议者!可能不会,但如果你愿意,你可以。”

希望这会有所帮助!

【讨论】:

以上是关于Solr 建议器近乎实时不可用的主要内容,如果未能解决你的问题,请参考以下文章

solr 近实时搜索

zookeeper服务注册和发现原理

Solr 与 Elasticsearch 的近实时搜索

如何使用 Solr 进行实时搜索

低成本搭建多可用区域高可用Cassandra集群

跪求bootstrap是怎么自适应布局的