7
votes

Comment rechercher sur plusieurs champs de Lucene à l'aide de la syntaxe de requête?

Je cherche un indice de Lucene et je construis des requêtes de recherche comme xxx pré>

mais je voudrais rechercher une valeur dans n'importe quel champ ainsi que les valeurs dans des champs spécifiques Dans la même requête, c'est-à-dire P>

field1:"hello" AND anyField:"world"


0 commentaires

3 Réponses :


2
votes

Les requêtes Boolean (ou) avec une clause de chaque champ sont utilisées pour rechercher plusieurs champs. Le MultifieldQueryParser va faire ça De plus, mais les champs doivent encore être énumérées. Il n'y a pas de "tous" implicites; Mais indexeReader.getfieldNames peut les acquérir.


1 commentaires

J'ai créé un "tout" explicite "tout" ... ça ne semble pas idéal mais chaque fois que je crée un champ, j'ajoute également au champ "Tous". Cela fonctionne mais semble un peu déquis. Vraiment ce que je voudrais faire, c'est de définir plusieurs noms pour chaque champ indexé afin que je puisse créer des catégories ou pouvoir rechercher des champs à l'aide de caractères génériques dans les noms de champs afin que je puisse rechercher "Nom *" pour "Nom.firstName: Bob"



7
votes

Basé sur les réponses que j'ai obtenues pour cette question: Impact de la valeur de répétition sur plusieurs champs de Lucene ...

Je peux mettre le même terme de recherche dans plusieurs champs et créer donc un champ "tout" que je mets tout dans. De cette façon je peux créer une requête comme ... xxx

Ceci semble fonctionner très bien, empêche le besoin d'énormes requêtes de recherche, et apparemment, l'impact des performances est minime.


0 commentaires

0
votes

Ceci pourrait ne pas s'appliquer à vous, mais dans la recherche Azure, qui est basée sur Lucene, à l'aide de la syntaxe Lucene, j'utilise ceci: xxx

résultats avec "contreplaqué" dans le "nom" le champ est boosté.


0 commentaires