【发布时间】:2014-08-06 06:21:36
【问题描述】:
我有一个像lovelive这样的词,它由两个简单的词love和live组合而成,没有空格。
我想知道哪种 Lucene Analyzer 可以将这种词标记为两个单独的词?
【问题讨论】:
标签: solr lucene elasticsearch
我有一个像lovelive这样的词,它由两个简单的词love和live组合而成,没有空格。
我想知道哪种 Lucene Analyzer 可以将这种词标记为两个单独的词?
【问题讨论】:
标签: solr lucene elasticsearch
看看DictionaryCompoundWordTokenFilter 是described in the solr reference
此过滤器使用组成词的字典将复合词拆分或分解为单个词。每个输入令牌都原封不动地通过。如果还可以分解成子词,那么每个子词也会被添加到流中相同的逻辑位置。
在:“Donaudampfschiff dummkopf”
要过滤的标记器:“Donaudampfschiff”(1)、“dummkopf”(2)、
输出:“Donaudampfschiff”(1)、“Donau”(1)、“dampf”(1)、“schiff”(1)、“dummkopf”(2)、“dumm”(2)、“kopf” (2)
正如您在示例配置中看到的那样,您需要使用您想要拆分的语言的字典,在示例中,他们使用 germanwords.txt,其中包含他们想要分解的单词(如果找到的话)。在您的情况下,这将是 love 和 live。
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.DictionaryCompoundWordTokenFilterFactory" dictionary="germanwords.txt"/>
</analyzer>
对于 Lucene,它是 org.apache.lucene.analysis.compound.DictionaryCompoundWordTokenFilter。 code is to be found on github。
【讨论】: