Solr拼写检查也不会返回大于10k项的索引的结果

时间:2017-09-18 08:25:26

标签: solr spell-checking solr6

我有一个Solr核心(Solr版本6.4.1),我也使用spellcheck component。 问题是,只要我的物品少于30k,我的拼写检查工作正常。将文档数量增加到30k或更多会导致拼写检查不返回任何结果。 我了解solrconfig.xml文件中的参数,例如 maxQueryFrequency thresholdTokenFrequency ,但更改它们并没有解决问题。

我还阅读了这些内容:Apache Solr : Search is not returning result for large document indexedSolr spellchecker not returning any resultssolr suggester not returning any resultsSolr spellcheckin randomly working,但他们也没有帮助。

这些是 solrconfig.xml 中的相关部分:

<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
  <str name="queryAnalyzerFieldType">text_general</str>
  <lst name="spellchecker">
    <str name="name">default</str>
    <str name="field">_spellcheck_</str>
    <str name="classname">solr.DirectSolrSpellChecker</str>
    <str name="distanceMeasure">internal</str>
    <float name="accuracy">0.5</float>
    <int name="maxEdits">2</int>
    <int name="minPrefix">1</int>
    <int name="maxInspections">5</int>
    <int name="minQueryLength">4</int>
    <float name="maxQueryFrequency">0.1</float>
    <float name="thresholdTokenFrequency">.0000001</float>
  </lst>
</searchComponent>

并且,在我的请求处理程序中:

<bool name="spellcheck">true</bool>
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck.extendedResults">false</str>
<str name="spellcheck.count">5</str>
<str name="spellcheck.alternativeTermCount">2</str>
<str name="spellcheck.maxResultsForSuggest">5</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">true</str>
<str name="spellcheck.maxCollationTries">5</str>
<str name="spellcheck.maxCollations">3</str>

_spellcheck _ 是一个CopyField(source =&#34; *&#34;),索引为text_general,定义为:

<fieldType name="text_general" class="solr.TextField" >
  <analyzer type="index">
    <charFilter class="solr.HTMLStripCharFilterFactory" />
    <tokenizer class="solr.ClassicTokenizerFactory" />
    <filter class="solr.ClassicFilterFactory" />
    <filter class="solr.ASCIIFoldingFilterFactory" />
    <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.TrimFilterFactory" />
    <filter class="solr.HyphenatedWordsFilterFactory" />
  </analyzer>
  <analyzer type="query">
    <charFilter class="solr.HTMLStripCharFilterFactory" />
    <tokenizer class="solr.ClassicTokenizerFactory" />
    <filter class="solr.ClassicFilterFactory" />
    <filter class="solr.ASCIIFoldingFilterFactory" />
    <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.TrimFilterFactory" />
    <filter class="solr.HyphenatedWordsFilterFactory" />
  </analyzer>
</fieldType>

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

经过一些工作后,我发现负责人是 maxResultForSuggest 参数。默认值5不足以满足我的数据集的大小,在我的搜索处理程序中将其设置为100解决了我的问题:

<str name="spellcheck.maxResultsForSuggest">100</str>

希望这会对某人有所帮助。