一尘不染

如何标记由两个单词合并而没有空格的单词

elasticsearch

我有一个像这样的词lovelive,它由两个简单的词组合而成lovelive没有空格。

我想知道哪种Lucene Analyzer可以将这种单词标记为两个单独的单词?


阅读 280

收藏
2020-06-22

共1个答案

一尘不染

有一个看DictionaryCompoundWordTokenFilter作为在Solr的说明

该过滤器使用组成词的词典将复合词拆分或分解为单个词。每个输入令牌均不变地传递。如果还可以将其分解为子字,则每个子字也将在同一逻辑位置添加到流中。

在:“ Donaudampfschiff dummkopf”中

要过滤的令牌生成器:“ Donaudampfschiff”(1),“ dummkopf”(2),

输出:“ Donaudampfschiff”(1),“ Donau”(1),“ dampf”(1),“ schiff”(1),“
dummkopf”(2),“ dumm”(2),“ kopf”(2)

如您在示例配置中看到的,您将需要使用您想要拆分的语言的字典,在示例中,他们使用germanwords.txt,其中包含要分解的单词(如果找到的话)。在您的情况下,这将是lovelive

<analyzer>
  <tokenizer class="solr.StandardTokenizerFactory"/>
  <filter class="solr.DictionaryCompoundWordTokenFilterFactory" dictionary="germanwords.txt"/>
</analyzer>

对于Lucene来说org.apache.lucene.analysis.compound.DictionaryCompoundWordTokenFilter。该代码可在github上找到

2020-06-22