2010-09-29 2 views
3

Dans Lucene, en utilisant un analyseur standard, je veux faire des champs avec un espace de recherche. Je définis Field.Index.NOT_ANALYZED et Field.Store.YES en utilisant le StandardAnalyzer Quand je regarde mon index dans LUKE, les champs sont comme je l'attendais, un champ et une valeur telle que: location -> 'New York' . Here J'ai trouvé que je peux utiliser le KeywordAnalyzer pour trouver cette valeur en utilisant la requête: location: "New York".Dans Lucene, en utilisant un analyseur standard, je veux faire des champs avec des espaces de recherche

Mais je veux ajouter un autre terme à la requête. Disons que vous avez un champ de corps qui contient les termes normalisés et analysés créés par le StandardAnalyzer. En utilisant le KeywordAnalyzer pour ce champ, j'obtiens des résultats différents que lorsque j'utilise le StandardAnalyzer.

Comment combiner deux analyseurs dans un même QueryParser, où un analyseur fonctionne pour certains champs et un autre pour d'autres champs. Je pensais à créer mon propre analyseur qui pourrait se comporter différemment selon les champs, mais je n'ai aucune idée de comment le faire.

Répondre

5

PerFieldAnalyzerWrapper permet d'appliquer différents analyseurs pour différents champs.

+0

C'était la solution que nous avons utilisée pour le même problème. Je recommande de créer une méthode publique getAnalyzer qui peut être utilisée à la fois par le chercheur et l'auteur. – Snekse

Questions connexes