solr - 影响 Solr 拼写检查
问题描述
对于使用 Solr 进行搜索的电子商务网站,我们使用标准的拼写检查组件,它在某些情况下可以正常工作,但在其他情况下则不行。这个问题是要了解它在后台如何工作以及如何改进它。
例如:我有一些产品名称中带有“手镯”。当我搜索拼写错误的术语,如“brecelet”或“bracelat”或“braselet”或“breclat”时,它会将其更正为“bracelet”,而不是“breclate”。
为什么它在上学期不起作用,我该如何影响它。
更新: 拼写检查配置:
<field name="SpellContent" type="textSpell" indexed="true" stored="false" multiValued="true" required="false" />
我们有上面的字段,我们在其中复制名称字段。
<fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
拼写检查为:
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">text</str>
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">SpellContent</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.01</float>
</lst>
<lst name="spellchecker">
<str name="name">wordbreak</str>
<str name="classname">solr.WordBreakSolrSpellChecker</str>
<str name="field">SpellContent</str>
<str name="combineWords">true</str>
<str name="breakWords">false</str>
<int name="maxChanges">10</int>
</lst>
</searchComponent>
解决方案
推荐阅读
- angular - 在 subject.next 之后,角度 observable 不加载服务
- spring-boot - springboot的JDBCTemplate如何使用回滚
- python - pyqtgraph 的 OpenGL 导入失败
- javascript - CSS 隐藏属性的文本内容
- visual-studio-code - 为什么我的 VSCode 终端不会改变样式?
- jquery - 使用 jQuery 计算 2 个日期输入 datetimepicker 的日差?
- weka - 在 WEKA,J48 中,将 minNumObj 设置为 1 有意义吗?
- mysql - 索引是 SQL 中的约束吗?
- typescript - import.meta.env 的打字稿类型
- amazon-web-services - AWS Glue 和 REST API