无法阻止 Solr 拼写检查组件对字符进行定界

Can't prevent Solr spellcheck component delimiting on characters

我似乎无法阻止 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

文本拼写:skiny | jen\"as

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

答案是同时指定spellcheck.qq。这样,主要查询结果基于 q,但拼写建议基于 spellcheck.q。看起来 Solr 正在对 q.

进行标记化和应用一些过滤器