solr部分单词匹配

时间:2014-11-19 08:32:26

标签: regex solr match partial

背景:

  • solr 4.10;
  • linux / java - 我猜他们在这一点上无关紧要;

我有这个词:ABCDEF。我需要找到所有文件的姓名(字段:NAME)与ABCDEF具有一定数量的字母。示例:ABCDEF应匹配4个字母的匹配:

  • 本身(ABCDEFABCDBCDE等);
  • 各种排列:B..A.DE.....F..A.DE... - 其中的点是其他字母,而不是ABCDEF中的字母。

我会尝试使用正则表达式(例如:^(.?)([ABCDEF] (.?)){4}$),但这也会匹配A..A..B..CA有两次)并且我不需要这个。

该字段的类型为string。但是,添加另一个要进行标记化和索引编制的字段不会有问题。

此外,模糊搜索/匹配不是一个选项 - 因为我需要那些确切的字母出现在匹配的字段中。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

将每个唯一字母(或键)作为单独的标记索引 - 您可以在索引代码中将其拆分,或使用更新处理器将字段拆分为字符。请务必使用不会丢弃短令牌的字段类型(例如停用词)。

如果每个字母/键都有一个字段,请使用mm参数(e)dismax来提供必须匹配的字词数,并提供要搜索的字母/键。单独的条款。

Index: ABCDEF
Document: field: (A, B, C, D, E, F)

Query: BCDF
/select?q=B C D F&mm=4&defType=dismax

Query: BCDF, at least two must match
/select?q=B C D F&mm=2&defType=dismax