J'ai 2 index, un pour les méta-données et un pour le texte, je veux pouvoir enlever toutes les recherches de champs dans la requête et utiliser seulement les champs par défaut que l'utilisateur cherche, "aide ET titre: covoiturage" je ne veux que la partie aide, des idées?lucene ignorer les requêtes sur les champs autres que par défaut
0
A
Répondre
1
Traverse sur l'arbre de BooleanQuery et supprimer les entrées terme liées (« aide »)
1
Ceci est un ordre de grandeur de ce que votre code devrait ressembler à:
public static void removeNonDefault(BooleanQuery query, String defaultField) {
List<BooleanClause> clauses = (List<BooleanClause>)query.clauses();
Iterator<BooleanClause> iter = clauses.iterator();
while(iter.hasNext()) {
BooleanClause clause = iter.next();
Query subQuery = clause.getQuery();
if(subQuery instanceof BooleanQuery) {
removeNonDefault((BooleanQuery)subQuery, defaultField);
} else if(subQuery instanceof TermQuery) {
if (!((TermQuery) subQuery).getTerm().field().equals(defaultField)) {
iter.remove();
}
}
}
}
Ce que cela fait est supprime TermQuery
s avec le champ non-par défaut du BooleanQuery
, et recurses vers le bas dans les requêtes sous-booléennes.
Notez que ce code n'est pas complet. En fonction de votre situation, vous pouvez vous soucier de plusieurs types de requêtes, telles que les requêtes de phrase et les requêtes de plage de scores constantes.
Assurez-vous de faire query.rewrite()
avant d'appeler cette fonction, pour convertir toutes les requêtes génériques en requêtes booléennes.
Questions connexes
- 1. C++: valeurs par défaut pour les arguments de modèle autres que les derniers?
- 2. Ignorer les lignes ayant les mêmes champs suivants comme précédent
- 3. SQL Server 2000 - Valeur par défaut pour les champs varchar
- 4. Lucene « ou requêtes »
- 5. Opérateurs imbriqués/require dans les requêtes de recherche Lucene
- 6. Recherche multi-champs dans Lucene
- 7. Action par défaut sur les pages JSF (c'est-à-dire en appuyant sur Entrée dans les champs de saisie)
- 8. Zend Lucene se comporte mal: Les requêtes fonctionnent un par un mais pas ensemble
- 9. Ignorer les méthodes sur les types d'entités avec NHibernate
- 10. Trier par nom, mais ignorer les citations?
- 11. Ignorer l'ordre des champs dans DataContractSerializer
- 12. Trouver toutes les fonctionnalités dans Lucene
- 13. Obtenez les noms de champs à partir d'une chaîne de requête Lucene
- 14. Ignorer les espaces blancs
- 15. lucene plus grand que
- 16. Comment charger les paramètres par défaut avec KConfig sur kdelib?
- 17. Renommer par programme les tables dans les requêtes Access
- 18. Lucene (Java) - Comment spécifier le champ de recherche par défaut par programme?
- 19. Aide sur les requêtes find_by de Rails
- 20. Icônes par défaut pour les applications Windows?
- 21. Est-ce que LINQ-to-SQL supporte les requêtes composables?
- 22. Les polices par défaut en Java
- 23. Aide sur les requêtes SQL Server 2005
- 24. Fichiers de ressources pour les langues autres que ISO 8859
- 25. CheckboxSelectionModel: Comment vérifier les lignes par défaut?
- 26. Rails Migrations: Charger les données par défaut
- 27. SingleOrDefault: Comment changer les valeurs par défaut?
- 28. Lucene - Recherche de plusieurs termes dans différents champs
- 29. injection Constructor et les surcharges par défaut
- 30. Hotmail/Yahoo (Autres?) Bloquant les notifications par e-mail?
des sites/suggestions où chercher pour faire cela? –