Je cherche un indice de Lucene et je construis des requêtes de recherche comme 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"
3 Réponses :
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. P>
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"
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 ... p> Ceci semble fonctionner très bien, empêche le besoin d'énormes requêtes de recherche, et apparemment, l'impact des performances est minime. P> P>
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: résultats avec "contreplaqué" dans le "nom" le champ est boosté. p> p>