2010-07-14 7 views
2

Si mon index contient trois champs booléens: a, b et c ...
Je voudrais rechercher: "a = Vrai, b = Faux, c = Vrai "et SOLR devrait renvoyer toutes les entrées, et leur score devrait représenter la qualité de l'ensemble de la requête.SOLR - comment faire une recherche floue sur les booléens

par exemple.

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 

est-ce possible?

Répondre

3

En supposant vrai = 1, faux = 0, quelques idées:

  • Construire toutes les combinaisons avec son coup de pouce correspondant au client, par exemple:

    (a:1 AND b:0 AND c:1) OR (a:1 OR b:1 OR c:1)^0.6 OR... 
    
  • Utilisez le dist function query, par exemple: dist(1, a,b,c, 1,0,1) (nécessite Solr 1.5+) (Je n'ai pas utilisé ceci, vous pourriez avoir à multiply ceci par -1)

+0

L'option 1 serait géniale, mais malheureusement j'ai plus de 90 de ces champs booléens ... Mais l'option 2 semble être un très bon choix (j'utilise sqedist, qui ne prend pas la racine carrée et devrait suffire, parce que je n'utilise que des 1 et des 0) ... – Jann

Questions connexes