2010-11-19 18 views
0

Nous utilisons Lucene.Net (2.3.2.1) avec NHibernate.Search dans notre produit et j'ai trouvé un comportement très étrange concernant mes requêtes. Voici la sortie de débogage de mes tests de thwo montrant la requête d'entrée et sur la deuxième ligne ce que l'analyseur de requête génère, en utilisant le StandardAnalyser:Lucene.Net Query Parser/Index bug?

Test 1 (échec)

LastName:* AND IdentityType:A 
LastName:* 

vs Test 2 (travail)

LastName:* AND IdentityType:F 
+LastName:* +IdentityType:f 

Comme vous pouvez le voir, la seule différence est « A » par rapport à « F » - j'ai joué arround et pourrait reproduire le même problème en utilisant « AN » « AS » « eT » - boîtier n'a pas d'importance , mais tous les autres termes ont fonctionné, j'avais le mot-clé ET à l'esprit, donc je me suis fatigué avec "O" "OU" mais ces deux fonctionnent. Pour moi, cela ressemblait à un problème avec l'analyseur de requête ... mais maintenant j'ai aussi regardé de plus près dans mon index généré et toutes les entités utilisant un "A" dans le type IndentityType ne sont pas indexées!

Je serais reconnaissant pour toute aide ou des conseils concernant ce problème.

salutations les, Chris

Répondre

2

Le StandardAnalyzer a une liste de mots d'arrêt qu'il utilise lors de l'analyse du texte. Le "A" est enlevé par ceci.

Essayez d'utiliser un per field analyzer wrapper, ainsi que a different analyzer pour votre champ IndentityType.

Sur une note plus administrative, vous auriez probablement reçu à réponse plus rapide si cette question ont été marqués "Lucene" au lieu de "Lucene.net" ...

Bonne chance,

+0

grâce a lot. Je vais essayer ça –