我有lovelive
这样的词,它由两个简单的单词love
和live
组合而成,没有空格。
我想知道哪种Lucene Analyzer可以将这种词分成两个单独的词?
答案 0 :(得分:4)
将DictionaryCompoundWordTokenFilter
视为described in the solr reference
此过滤器使用组成单词的字典将复合单词拆分或解压缩为单个单词。每个输入令牌都保持不变。如果它也可以被分解为子字,则每个子字也会被添加到同一逻辑位置的流中。
In:“Donaudampfschiff dummkopf”
要过滤的标记符:“Donaudampfschiff”(1),“dummkopf”(2),
Out:“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。