我在SOLR中使用过poseter组件,但由于我失去了对值和字段的控制(如果我有兴趣回复其他字段以及纠正的拼写),我觉得它更有限。
我目前正在使用带状疱疹和edgengram过滤器工厂进行无位置自动提示,并指定要与autosuggest列表一起返回的必填字段。
<fieldType name="edgytext" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
<analyzer type="index">
<filter class="solr.LowerCaseFilterFactory"/>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="20" />
</analyzer>
<analyzer type="query">
<filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.ShingleFilterFactory" outputUnigrams="true" outputUnigramIfNoNgram="true" maxShingleSize="99"/>
<filter class="solr.PositionFilterFactory" />
</analyzer>
</fieldType>
有没有办法在SOLR(或任何其他过滤器)中使用建议器或任何其他组件来返回自动提示结果,执行内联校正并返回所需的字段作为响应?
注意: 我正在寻找fuse.js,我真的很喜欢那里的自动修正方式。它不是服务器端自动更正,但使用位图算法进行近似字符串匹配。
答案 0 :(得分:0)
我想出了一种使用拼写检查组件和上述代码逻辑相结合的方法来实现自动提示。
首先我检查拼写是否正确(使用拼写检查组件),如果我没有得到任何建议,我只是尝试用原始关键字查询。如果我得到任何建议,我会使用建议的术语(整理)进行新查询。