我为我的应用程序使用solr并且我集成了拼写检查组件,但是我遇到了一些问题:
第一:当我输入一个由空格分隔的术语时,它们会给我每个术语的校正
例如:"wat ters" => "什么术语"但真实的是watters
第二:当我输入一些带有错误术语的短语时.虽然其他条款是正确的,但它们适用于所有条款的拼写.
例如:" Difreences在lankuage使用公约" =>"语言运用中的差异转换 ".
真实的是"语言使用惯例的差异"
这是我在solrconfig.xml中的配置:
<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>
</lst>
</searchComponent>
<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="spellcheck.onlyMorePopular">true</str>
<str name="spellcheck.extendedResults">false</str>
<str name="spellcheck.count">1</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
Run Code Online (Sandbox Code Playgroud)
Schema.xml:
字段类型:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
<filter class="solr.ASCIIFoldingFilterFactory" /> …Run Code Online (Sandbox Code Playgroud)