2010-07-14 6 views
1

Je tente d'interroger certains résultats en utilisant une requête booléenne. Cependant, la requête ne renvoie aucun résultat.Lucene ajoutant un filtre supplémentaire renvoie aucun résultat

Voici le FilterQuery que je cours. Cela ne renvoie aucun résultat, même si le champ foo contient une barre et que le champ foo3 contient bar3. Et j'ai triplé mes champs pour m'assurer que les champs existent dans l'index. Maintenant, si je supprime le + foo3: bar3 de la requête, je reçois les résultats correctement. Aussi foo3: bar3 est ajouté par programmation, donc je ne l'analyse pas. Voici un code correspondant

//This code creates the first part of the query. 
MultiFieldQueryParser mfqp = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_29,SearchFields, analyzer); 
Query q = mfqp.Parse(query); 
BooleanQuery filterquery = new BooleanQuery(); 
filterquery.Add(q,BooleanClause.Occur.MUST); 

//This code creates the second part of the query 
Query fq = new TermQuery(new Term("foo3","bar3")); 
filterquery.Add(fq, BooleanClause.Occur.MUST); 

//Perform the search 
ScoreDoc[] hits = isearch.Search(filterquery, null, ResultsToReturn).scoreDocs; 

Juste pour référence, je suis en train courant les champs à analyser, et le vecteur est mis à With_positions_offsets

+0

fait + foo3: bar3 par lui-même retourner des documents? – bajafresh4life

+0

Il retourne des documents, si je modifie la façon dont la recherche fonctionne. Si le MFQP transmet le terme à la requête booléenne, cela fonctionne. mais si j'utilise le terme, il échoue –

Répondre

1

J'ai changé d'utiliser un TermQuery, à l'aide d'un QueryParser, qui semble avoir résolu le problème.

Questions connexes