我正在使用solr.ICUTokenizerFactory
索引我的firstName
和lastName
字段,以便我可以根据语言特定的字边界来标记事物。
<fieldType name="text_icu" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.ICUTokenizerFactory"/>
</analyzer>
</fieldType>
但是我有一个用例,我想弄明白。假设我在firstName中有类似"steve-jobs"
的内容。
这被标记为两个令牌。
史蒂夫,工作
但是,如果我进行外卡搜索
史蒂夫祚*
它找不到任何东西,因为没有这样的标记。
如果我也可以保留原始令牌,我的问题就会解决。 所以虽然索引以某种方式我可以生成这样的三个令牌
史蒂夫,作业,史蒂夫的作业
有没有办法可以保留原始令牌?
我正在使用 DSE 4.8.12 。
或者还有其他方法可以解决这个问题。任何指针赞赏。感谢。
答案 0 :(得分:0)
我相信你可以将WordDelimiterFilterFactory与ICUTokenizerFactory结合使用。 WordDelimiterFilterFactory有一个preserveOriginal选项:
<fieldType name="text_icu" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.ICUTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
preserveOriginal="1"
/>
</analyzer>
</fieldType>