Solr suggester近实时不可用

Solr suggester近实时不可用,solr,near-real-time,Solr,Near Real Time,我在通过SOLR suggester近实时显示结果时遇到一些问题。尽管如此,如果我尝试使用搜索处理程序,它在近实时搜索中工作正常。 如果我添加了一个文档,我可以通过搜索处理程序在近rel时间内检索该文档,但只有在我重新加载核心后,相同的记录才能在suggester中使用。为什么会发生这种情况? 下面是我在solr-config.xml中为suggester输入的条目 <searchComponent name="suggest" class="solr.SuggestComponent

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

  <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>

我的建议者
FuzzyLookupFactory
文档字典工厂
电子邮件
人气
一串
真的
10
我的建议者
建议
这是我输入的自动提交和软提交(使用默认值)


${solr.autoCommit.maxTime:15000}
假的
${solr.autoSoftCommit.maxTime:-1}

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

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

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

引用Lucidworks指南:

“尤其是,任何使用“DocumentDictionaryFactory”的版本在构建suggester时都会从字段存储的数据中读取原始数据!这意味着如果您已向索引中添加了1M个文档并开始构建,则每个文档都必须: 从磁盘读取 解压 被合并到建议者的数据结构中。 这样做的结果是,configs中指定的字段必须在您的架构中存储设置为=“true”。 正如你所能想象的,这可能需要一段时间,而且不能轻易完成。“一段时间”在Mac Pro上的1100万文档维基百科转储上几乎需要10分钟

知道: “buildOnStartup”参数应设置为“false”。这可能会导致启动时间很长,在非常大的索引上会花费很多分钟。您真的想在每次启动Solr时重新读取、解压缩并将每个文档中的字段添加到suggester中吗?可能不会,但如果愿意,您可以这样做。 “buildOnCommit”参数应设置为“false”。确实如此。是否确实要在每次提交时重新读取、解压缩每个文档中的字段,并将其添加到suggester中?可能不会,但如果愿意,可以。”

希望这有帮助

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