是否有将单词组合应用于输入的过滤器或标记器?
例如,如果我有“ Hello Guys你好吗?”,它也必须以这种方式建立索引:“ HelloGuys”,“ GuysHow”,“ Howare”,“ areyou”,当我搜索术语“ HelloGuys”时也必须查找具有该字段值的文档。我以为WordDelimiterGraphFilter是正确的过滤器,但它会划分复合词,但不会生成复合词。我正在寻找与WordDelimiterGraphFilter相反的类似内容,谢谢。

最佳答案

您要寻找的是带状疱疹。 Solr有一个ShingleFilter,当令牌出现在令牌流中时,它将令牌连接在一起。您可以根据需要调整要加入的令牌数量(即HelloGuysHow),如果需要,可以更改令牌之间的分隔符(即Hello_Guys)。


<analyzer>
  <tokenizer class="solr.StandardTokenizerFactory"/>
  <filter class="solr.ShingleFilterFactory"/>
</analyzer>

  
  在:“成为,还是什么?”
  
  要过滤的令牌生成器:“ To”(1),“ be”(2),“ or”(3),“ what”(4)
  
  输出:“致”(1),“成为”(1),“成为”(2),“成为或”(2),“或”(3),“或什么”(3),“什么” (4)


对于您的用例,请使用tokenSeparator=""

关于java - Solr索引的复合词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51681639/

10-09 12:48