[英]Solr spell check phrases
我正在尝试找到一种进行两组拼写检查的方法。
一种处理文档中常见单词的拼写检查查询。 另一个处理拼写检查查询,查找诸如作者姓名之类的项目,该名称可以是多个单词长。 我希望它能正常工作,以便即使他们离作者的名字很近,它也会显示建议。 但是拼写错误的建议要求单词距离要更近。
现在,我有一个用于拼写的“万能”字段,但是它做了很多标记化处理,会破坏短语。 所以我不能真正将其原样用于短语匹配。
这是拼写检查组件:
<searchComponent name="spellcheck" class="solr.SpellCheckComponent" startup="lazy">
<!-- <str name="queryAnalyzerFieldType">textSpell</str> -->
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">spell</str>
<str name="classname">solr.DirectSolrSpellChecker</str>
<str name="distanceMeasure">internal</str>
<float name="accuracy">0.65</float>
<int name="minPrefix">0</int>
<int name="maxEdits">1</int>
<int name="maxInspections">5</int>
<int name="minQueryLength">3</int>
<float name="maxQueryFrequency">0.0005</float>
<float name="thresholdTokenFrequency">.001</float>
<str name="buildOnCommit">true</str>
</lst>
<!-- a spellchecker that can break or combine words. See "/spell" handler below for usage -->
<lst name="spellchecker">
<str name="name">wordbreak</str>
<str name="classname">solr.WordBreakSolrSpellChecker</str>
<str name="field">spell</str>
<str name="combineWords">true</str>
<str name="breakWords">true</str>
<int name="maxChanges">1</int>
<str name="buildOnCommit">true</str>
</lst>
</searchComponent>
和实际的拼写字段:
<fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
<filter class="solr.EnglishMinimalStemFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
<field name="spell" type="textSpell" indexed="true" stored="true" multiValued="true"/>
对单独的标记进行了拼写检查。 您可以添加solr.ShingleFilterFactory
到您的分析之前solr.RemoveDuplicatesTokenFilterFactory
使短语令牌。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.