2010-07-14 58 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