我正在使用SOLR(3.x)并且需要将字段从词干转换为非词干版本.
是否有一个词干过滤器,既可以索引确切的文本也可以索引词干(因此我可以在短期内匹配)或者我被迫复制到新字段然后转换到新字段.
小智 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>
Run Code Online (Sandbox Code Playgroud)
这将与您的确切术语和词干版本相匹配.虽然对于确切的术语,但得分将会很高,因为未开发和阻止的版本将匹配并添加分数.
我们之前已经使用过这个,但后来又开始创建两个字段(正如Arun的注释),stemmed和unstemmed,同时搜索并提供我们需要的提升.这使我们能够更好地控制我们正在做的事情.
只是另一种选择,看看什么适合你.