J'essaie d'utiliser Lucene pour rechercher des noms dans une base de données. Cependant, certains des noms contiennent des mots comme "NOT" et "OU" et même des symboles "-" moins. Je veux toujours que les différents jetons à l'intérieur des noms soient séparés à l'aide d'un analyseur et recherchés comme une combinaison booléenne de termes, mais je ne veux pas que Lucene interprète les termes "NOT"/"OU" comme des opérateurs veulent qu'ils soient recherchés comme des termes normaux). Une façon d'accomplir ce dont je parle serait d'exécuter manuellement l'analyseur sur la requête de recherche, puis de construire manuellement une requête booléenne basée sur tous les jetons résultants. Est-ce la meilleure façon? J'ai l'impression que les analyseurs ont été conçus pour être utilisés avec l'analyseur de requêtes et je pense qu'il devrait y avoir un moyen intégré d'accomplir ce que j'essaie de faire. Quelqu'un sait le meilleur moyen de le faire?Lucene Query SANS opérateurs
Répondre
Votre propre approche suggérée de construction d'une requête booléenne à partir d'un TokenStream prend tout son sens. L'API QueryParser est vraiment destinée uniquement à analyser des requêtes structurées à l'aide d'une syntaxe spécifique. Si vous n'utilisez pas la syntaxe de l'analyseur de requête, je ne vois aucune raison d'utiliser QueryParser sur une requête BooleanQuery construite manuellement. Toutefois, si vous utilisez un analyseur StandardAnalyzer (ou un autre analyseur avec un StopFilter) pour indexer vos champs, les mots tels que "AND", "NOT" et "OR" ne seront pas indexés et ne pourront pas être recherchés. Donc, dans ce cas, vous pouvez tout aussi facilement supprimer ces mots et opérateurs tels que "-" et "+" de vos requêtes en utilisant une expression régulière. Je recommanderais plutôt l'approche BooleanQuery, cependant.
- 1. Réutilisation d'objets Lucene Query
- 2. Query dans Lucene
- 3. Opérateurs imbriqués/require dans les requêtes de recherche Lucene
- 4. rightrotate sans opérateurs bit à bit
- 5. Fichiers d'indexation Split Lucene sans réindexation
- 6. Demander des jetons Lucene sans indexer
- 7. Méthode recommandée pour effectuer la recherche Lucene sans limite
- 8. Lucene SpanNearQuery
- 9. Document Lucene stimulons
- 10. Opérateurs de conversion C++ définis par l'utilisateur sans classes?
- 11. Lucene Jackrabbit
- 12. Lucene Problème de recherche
- 13. Caractères génériques dans Lucene
- 14. Champ complet de Lucene
- 15. Requête générique dans Zend Lucene
- 16. && = et || = opérateurs
- 17. iPhone opérateurs
- 18. Opérateurs multithread
- 19. JavaScript !! opérateurs
- 20. opérateurs LINQ comme dans
- 21. Lucene et caractères spéciaux
- 22. Problèmes d'utilisation de Lucene Highlighter
- 23. Lucene DuplicateFilter question
- 24. Recherche multi-champs dans Lucene
- 25. performance Lucene
- 26. Lucene QueryParser
- 27. Lucene Version
- 28. Lucene Indexing
- 29. Lucene BooleanQuery
- 30. opérateurs mathématiques dans les requêtes Critères