2010-07-14 57 views
2

如果我的索引包含三個布爾字段:a,b和c ...
我想搜索:「a = True,b = False,c = True 「並且SOLR應該返回所有條目,並且他們的分數應該表示整個查詢匹配的程度。SOLR - 如何在布爾值上進行模糊搜索

例如

a=T, b=F, c=T, score=1.0 
a=T, b=T, c=T, score=0.6 
a=T, b=T, c=F, score=0.5 

是可能的嗎?

回答

3

假設真= 1,假= 0,一對夫婦的想法:

  • 建立與客戶端的相應提升每一個組合,如:

    (a:1 AND b:0 AND c:1) OR (a:1 OR b:1 OR c:1)^0.6 OR... 
    
  • 使用dist function query,例如:dist(1, a,b,c, 1,0,1)(需要Solr 1.5+)(我沒有用過這個,你可能需要multiply這個-1)

+0

選項1將是偉大的,但不幸的是我有超過90這些布爾字段... 但選項2似乎是一個真正的好選擇(我使用sqedist,它不採取平方根,應該足夠了,因爲我只使用1和0)... – Jann 2010-07-19 12:04:05