我在拼写检查方面遇到了麻烦。
如果我发送带有“wrd”的请求,拼写检查会给我一些我想要的建议:“word”。但是如果我发送带有多个术语的请求,例如“wrd black”,则spellcheck会将correctSpelled返回true。 我想要拼写检查建议:“黑字”。
请注意,如果我发送带有“wrd blck”的请求,拼写检查会给出我想要的建议(“黑色字”)。
我不认为这是正常行为,但我找不到问题所在。
这是我的solrconfig.xml:
<config>
<requestHandler name="standard" class="solr.StandardRequestHandler" default="true">
<lst name="defaults">
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck">on</str>
<str name="spellcheck.extendedResults">true</str>
<str name="spellcheck.count">10</str>
<str name="spellcheck.maxResultsForSuggest">5</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">true</str>
<str name="spellcheck.maxCollationTries">15</str>
<str name="spellcheck.maxCollations">10</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">textSpell</str>
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">spell</str>
<str name="spellcheckIndexDir">./spellchecker</str>
<str name="buildOnOptimize">true</str>
<str name="buildOnCommit">true</str>
<float name="thresholdTokenFrequency">.01</float>
</lst>
</searchComponent>
</config>
并在我的schema.xml中:
<field name="spell" type="textSpell" indexed="true" stored="false" multiValued="true" />
<copyField source="attr_*" dest="spell" />
<fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StandardFilterFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
</analyzer>
</fieldType>
任何人都有任何想法?
答案 0 :(得分:0)
当其中一个查询字词拼写正确并且拼写检查配置有maxCollationTries&gt; 1时,似乎有一个错误,我无法确定它是一个错误,我正在通过代码找出这个。
从处理程序的默认参数
中删除此配置<str name="spellcheck.maxCollationTries">15</str>
您可以将此作为查询参数用作spellcheck.maxCollationTries = 15并尝试。