Comment effectuer une recherche dans un Champ à plusieurs valeurs dans Solr?
Je vais avoir des difficultés pour exécuter une recherche Solr. Mon Solr a un champ à plusieurs valeurs comme ci-dessous:
<int name="id">2166324592435</int>
...others fields
<arr name="Series">
<str>The Walking Dead<\str>
<str>Game of Thrones<\str>
<\arr>
Le champ à plusieurs valeurs de la Série a, la série Tv qui le document de référence. Dans l'exemple ci-dessus, mon document dit à propos de The Walking Dead et Game of Thrones. Je peux avoir des documents avec un, deux ou plusieurs séries, ou même pas de la série.
Ce que je veux faire est de rechercher dans Solr. Je veux donner à la série que je veux et Solr devrait retourne les documents qui dit à propos de ma requête. J'ai essayé mais je ne pouvais pas le faire. J'ai essayé le suivant:
q=series:The Walking Dead or series:Game of Thrones or ...&wt=json
Je pense que je fais mal. Quelle est la bonne façon de le faire?
Merci d'avance
Thiago
Vous devez vous connecter pour publier un commentaire.
En plus de @user1452132 's réponse -
Lorsque vous êtes à la recherche
q=series:The Walking Dead
, seulementthe
est recherché à travers la série champ, tandis que lewalking dead
est à rechercher à l'échelle de la valeur par défaut du champ de recherche.La requête formée serait de la série:le OU les texte:(Walking Dead)
Vous pouvez déboguer la Requête à l'aide de la debugQuery=dans votre url de la requête.
Vous pouvez utiliser Dismax gestionnaire de requêtes pour le rendre plus faciles à gérer.
Essayer quelque chose comme cela:
series:("The Walking Dead" OR "Game of Thrones")
filter query
paramètre, ce qui fonctionne réellement.Utiliser dans
fq
paramètre (filtre de requête),E. g
Solr l'encodage de l'url:
Ainsi, vous pourriez obtenir une url comme ceci:
En fonction de l'objectif de la recherche est d'essayer les deux recherches
de la série:"The Walking Dead" OU de la série:"le Jeu des Épines"
série: The Walking Dead) OU de la série:(Jeu d'Épines)
Veuillez lire solr la syntaxe de la requête et le sous-jacent La syntaxe de la requête Lucene
Je pense que le réel problème est l'utilisation de
OR
comme des minuscules. Quand vous faites quelque chose comme ça, Leor
valeur est recherchée dansdefaultTextField
. Aussi n'oubliez pas de mettre des guillemets s'il y a un espace dans votre requête et vous êtes à la recherche d'une correspondance exacte.