2013-02-12 135 views
0

我正在开发一组查询以从自由文本输入中查找规范产品说明。请看下面的例子是说明我的问题:使用Solr提升查询的部分

(* 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?

回答

0

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

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

对于情况2和4,在查询本身包含正则表达式的情况下,可以针对匹配项发出具有额外提升的查询。