在Solr中组合多个标记器

时间:2017-07-27 11:59:05

标签: java solr

我尝试将LetterTokenizerFactoryWhitespaceTokenizerFactory结合使用,但如果不使用copyField复制内容,则无法找到该怎么做。

让我描述一下我的想法:

  • 我在文字中有两个条目,例如H& M和Hewlett-Packard
  • 用户应该能够找到H& M进入h&m - 我为此目的使用WhitespaceTokenizerFactory,无需在特殊字符上拆分令牌
  • 用户应该能够找到Hewlett-Packard进入' packard' - LetterTokenizerFactory服务于此案例,令牌分为特殊字符
  • 现在我想结合这两个标记符

如果不使用不同的tokenizer工厂声明2种不同类型,然后将值复制到第二种类型的字段,我该如何实现呢?

1 个答案:

答案 0 :(得分:1)

您可以使用WhitespaceTokenizerFactory作为主标记器,然后添加WordDelimiterGraphFilter以将您的标记进一步拆分为较小的标记。

从WordDelimiterGraphFilter的示例(以前名为WordDelimiterFilter,但现在已弃用 - 所以名称将取决于您使用的Solr版本):

  

非字母数字字符(丢弃):“热点” - > “热”,“现场”

这将允许帕卡德与hewlett相匹配。请注意,这也将允许'm'匹配h&m,因为您要拆分非字母数字字符。您可以使用过滤器的protected设置指定不应触及的单词列表,如果您希望&的所有内容保持不变,则可以更好地使用{{1} }参数重新定义应将types视为哪种类型。