Solr建议器近乎实时无法使用

时间:2015-04-08 17:18:08

标签: solr near-real-time

我在通过SOLR建议器近乎实时地显示结果时遇到了一些麻烦。虽然,如果我尝试使用搜索处理程序,它可以正常用于近实时搜索。 如果我添加一个文档,我可以通过搜索处理程序在接近相关的时间内检索该文档,但只有在我重新加载核心后才能在建议器中提供相同的记录。为什么会发生这种情况? 这是我在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>

2 个答案:

答案 0 :(得分:1)

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

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

希望这有助于其他人。

答案 1 :(得分:1)

引用Lucidworks指南:

&#34;特别是,任何使用“DocumentDictionaryFactory”的版本在构建建议者时都会从字段的存储数据中读取原始数据!这意味着如果您已将1M文档添加到索引并启动构建,则每个文档都必须: 从磁盘读取 减压 被纳入建议者的数据结构中。 这样做的结果是配置中指定的字段必须在模式中设置stored =“true”。 你可以想象,这可能需要一段时间,而且不能轻易做到。在Mac Pro上的11M doc Wikipedia转储中,“一段时间”差不多10分钟。&#34;

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

希望这有帮助!