我有一个Solr核心(Solr版本6.4.1),我也使用spellcheck component。 问题是,只要我的物品少于30k,我的拼写检查工作正常。将文档数量增加到30k或更多会导致拼写检查不返回任何结果。 我了解solrconfig.xml文件中的参数,例如 maxQueryFrequency 或 thresholdTokenFrequency ,但更改它们并没有解决问题。
我还阅读了这些内容:Apache Solr : Search is not returning result for large document indexed,Solr spellchecker not returning any results,solr suggester not returning any results和Solr 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>
有什么建议吗?
答案 0 :(得分:0)
经过一些工作后,我发现负责人是 maxResultForSuggest 参数。默认值5不足以满足我的数据集的大小,在我的搜索处理程序中将其设置为100解决了我的问题:
<str name="spellcheck.maxResultsForSuggest">100</str>
希望这会对某人有所帮助。