【问题标题】:Case insensitive spell check in SolrSolr 中不区分大小写的拼写检查
【发布时间】:2011-08-24 22:52:56
【问题描述】:

我们如何让 solr 中的拼写检查器忽略大小写?对于查询:“皮革”,我得到正确的建议“皮革”。但如果查询是“lether”,我会得到一些不同的建议,例如“lethel”,这是不正确的。

我尝试了this post 中提到的配置,但它似乎不起作用。

我在这里复制了我的配置以供参考:

<fieldType name="text_spell" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
  <analyzer type="index">
     <tokenizer class="solr.StandardTokenizerFactory"/>
     <filter class="solr.LowerCaseFilterFactory"/>
     <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
   </analyzer>
   <analyzer type="query">
     <tokenizer class="solr.StandardTokenizerFactory"/>
     <filter class="solr.LowerCaseFilterFactory"/>
     <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
   </analyzer>
</fieldType>

<field name="spelltext" type="text_spell" indexed="true" stored="false" multiValued="true"/>
<field name="title" type="text" indexed="true" stored="true" multiValued="false" omitNorms="true"/>
<copyField source="title" dest="spelltext" />

我有什么明显的遗漏吗?

【问题讨论】:

  • 嘿,你得到了答案的解决方案。我陷入了同样的境地。请帮帮我。

标签: solr spell-checking case-insensitive lowercase


【解决方案1】:

在 cse 中,您还没有在 spellchecker 组件中使用小写过滤器指定 fieldType,例如,

<lst name="spellchecker">
  <str name="name">spell</str>
  <str name="field">text_spell</str>
  <str name="spellcheckIndexDir">spell</str>
  <str name="buildOnOptimize">true</str>
</lst>

其次,还要注意buildOnOptimize,它会在optimize 命令上重建您的拼写检查索引。

【讨论】:

  • 是的,我已经这样做了。这是我正在使用但不起作用的配置:inline &lt;lst name="spellchecker"&gt; &lt;str name="name"&gt;default&lt;/str&gt; &lt;str name="field"&gt;spelltext&lt;/str&gt; &lt;str name="spellcheckIndexDir"&gt;spellchecker&lt;/str&gt; &lt;str name="comparatorClass"&gt;freq&lt;/str&gt; &lt;str name="accuracy"&gt;0.8&lt;/str&gt; &lt;str name="buildOnCommit"&gt;true&lt;/str&gt; &lt;/lst&gt;
  • 这个运气好吗?
猜你喜欢
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多