假设我有一个字段类型如下:
<fieldType name="text_body" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" catenateWords="1" preserveOriginal="1"/>
<filter class="solr.FlattenGraphFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
我的目标是为每个令牌索引原始令牌以及通过所有令牌过滤器后的令牌。例如,对于文本:
"My dog is barking #DOGS"
当前字段类型(如上所述)将索引以下标记:
"my", "dog", "bark", "dogs", "#dogs"
由于 stopWords 过滤器,“is”将被删除,并且由于词干过滤器,“barking”将变为“bark”。
我希望将索引以下标记:
"My", "my", "dog", "barking", "bark", "dogs", "#DOGS".
我考虑了 WordDelimiterGraphFilterFactory 中的“perserveOriginal”参数,但它仅适用于具有特殊字符的标记,并且“原始标记”之后通过其他过滤器。
我知道最明显的方法是编写一个自定义的 TokenFilter,在标记器之后立即以原始形式索引标记,但我的问题是 Solr 中是否有内置的东西允许它。
我正在使用 Solr 6.5.1
谢谢 :)