1

我正在使用 SOLR (3.x),需要将字段从词干转换为非词干版本。

是否有一个词干过滤器可以同时索引确切的文本和词干文本(所以我可以在短期内匹配两者)或者我是否被迫复制到一个新字段然后转换到新字段。

4

1 回答 1

8

来自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 的评论),词干和非词干,同时搜索并在需要时提供提升。这使我们能够更好地控制我们正在做的事情。

只是另一种选择,看看什么适合你。

于 2013-10-24T07:23:59.363 回答