使用Solr提升查询的一部分

时间:2013-02-12 19:03:23

标签: regex solr lucene

我正在开发一组查询,以便从自由文本输入中查找规范的产品说明。请考虑以下示例来说明我的问题:

(* Where: (a) Free text (b) Should have returned (c) What was found)

 - (a) 'CUTTER FLOOR90 CM DUPLEX - IRWIN' 
 - (b) 'CUTTER F/FLOOR/AZULEJ.90CM DUPLEX  0096'
 - (c) 'CUTTER FLOOR65 CM DUPLEX - IRWIN'
 - (a) 'WELDABLE GLOVE 50MM - TIGER'
 - (b) 'LUVA . WELD BROWN 826 TIGER(50MM)' 
 - (c) 'WELDABLE GLOVE 40MM - TIGER'
 - (a) 'INSULATION TAPE 33+ SCOTCH 19X10M - 3M'
 - (b) 'INSUL. TAPE.PVC PT  19MMX10M  N.33+ H00018' 
 - (c) 'INSULATION TAPE HIGHLAND 19X05M - 3M'
 - (a) 'KEY COMBINATION 14MM - GEDORE'
 - (b) 'KEY COMB. 14MM    CV. 002509  002509 1' 
 - (c) 'KEY COMBINATION 10MM - GEDORE'

正如您所看到的,查询返回的字符串作为一个整体更紧密地匹配。我需要提高子串的重要性,如(\ d +)MM或(\ d +)CM。

你会怎么做,最好是Solr?

1 个答案:

答案 0 :(得分:0)

您可能需要根据您面临的两种情况发出不同的查询。

为了帮助您处理查询不包含正则表达式的情况1和3,您可以在文档中保留一个额外的字段,例如名为popularity。使用正则表达式的文档保持更高。然后按照Solr relevancy page所说的那样。

对于案例2和4,查询本身包含正则表达式,您可以为匹配项发出额外提升的查询。