我正在使用 SOLR (3.x),需要将字段从词干转换为非词干版本。
是否有一个词干过滤器可以同时索引确切的文本和词干文本(所以我可以在短期内匹配两者)或者我是否被迫复制到一个新字段然后转换到新字段。
来自http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
一个重复的问题是“我怎样才能让原始术语比词干版本对分数的贡献更大”?在 Solr 4.3 中,添加了 KeywordRepeatFilterFactory 来辅助此功能。此过滤器为每个输入标记发出两个标记,其中一个标记有关键字属性。尊重关键字属性的词干将通过如此标记的标记而不会更改。所以这个过滤器的效果是索引原始单词和词干版本。上面列出的 4 个词干分析器都尊重关键字属性。
对于没有通过词干更改的术语,这将导致文档中出现重复的、相同的标记。这可以通过添加 RemoveDuplicatesTokenFilterFactory 来缓解。
<fieldType name="text_keyword" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.KeywordRepeatFilter"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
这将与您的确切术语和词干版本相匹配。尽管对于确切的术语,分数会很高,因为无词干和词干版本都将匹配并添加分数。
我们之前使用过它,但随后继续创建两个字段(完全按照 Arun 的评论),词干和非词干,同时搜索并在需要时提供提升。这使我们能够更好地控制我们正在做的事情。
只是另一种选择,看看什么适合你。