2013-02-12 94 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,在查詢本身包含正則表達式的情況下,可以針對匹配項發出具有額外提升的查詢。