无法阻止Solr拼写检查组件在字符上的分隔

时间:2015-09-16 11:40:51

标签: search solr spell-checking

我似乎无法阻止Solr拼写检查组件按字符分隔单词。这是我的拼写建议的基础字段:

<fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>

这是我的主要通用字段类型:

<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" enablePositionIncrements="true" />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" enablePositionIncrements="true" />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
</fieldType>

当我运行查询时:

skiny jen\"as

我返回了整理的拼写建议:

"skinny jeans\\\"wash"

这看起来很奇怪,因为查询已分为skinyjenas,但是以这种格式整理在一起。当我使用Solr分析器查看我的查询正在做什么时,这些是我得到的两种字段类型的最终结果(这给了我所期望的):

text_en:skini | jen\"a

textSpell:skiny | jen\"as

因此,考虑到这一点,为什么jenas会在令牌jen\"as中单独处理?

1 个答案:

答案 0 :(得分:0)

答案是一起指定spellcheck.qq。这样主要的查询结果基于q,但是spellcheck.q上的拼写建议。看起来Solr正在对q进行标记并应用一些过滤器。