2011-04-05 15 views
1

J'ai une installation Solr qui contient des recettes. Chaque recette a plusieurs ingrédients et je suis actuellement en train de construire une recherche de recette que vous pouvez taper «inclut/exclut», puis j'ai un système de poids homebrew qui vient après.Comportement de requête Solr

La construction de la requête est désactivée mais doit être affinée.

// Works perfect - 109 results 
ingredients:chicken OR tomatoes OR bacon 

// Down to 7 results - Definitely wrong 
ingredients:chicken OR tomatoes OR bacon AND -ingredients:garlic 

J'ai essayé la construction de cette requête toute façon, mais qui ne peut pas comprendre un « filtre flou » acceptable

+1

cela pourrait aider: http://stackoverflow.com/questions/634765/using-or-and-not-in-solr-query –

+0

pas beaucoup, je ne sais pas comment l'appliquer à ma requête – bluedaniel

+0

il semble être le même problème ... avez-vous essayé toutes les suggestions? avez-vous lu le fil de Solr-utilisateur? –

Répondre

1

je ferais:

ingredients:((chicken OR tomatoes OR bacon) AND NOT garlic) 

Cela fonctionne pour moi.

Vous pouvez ajouter tous les exclut comme ceci:

ingredients:((chicken OR tomatoes OR bacon) AND NOT (garlic OR peanuts OR spinach)) 
+1

Cela a fonctionné parfaitement pour moi. Je vous remercie. Vous pouvez voir la recherche sur http://www.guardian.co.uk/lifeandstyle/recipe-search/search – bluedaniel

0

Essayez ingredients:chicken OR tomatoes OR bacon AND (-ingredients:garlic)

Je suppose que vous êtes vous utilisez Solr 3.1 avec edismax.

J'ai trouvé que l'insertion de requêtes négatives entre parenthèses fonctionne. Je n'ai pas eu le temps d'examiner cela plus en détail et de déterminer si c'est le comportement attendu ou s'il s'agit d'un bug. Si vous examinez cette question plus en détail et confirmez qu'il s'agit d'un bug, veuillez ouvrir un numéro Jira here.

Notez que la requête que j'ai suggérée ci-dessus va chercher tomates/bacon dans le (s) champ (s) par défaut selon votre config. Si vous voulez rechercher dans ingredients seulement, puis utilisez ingredients:(chicken OR tomatoes OR bacon) AND (-ingredients:garlic)