Lucene добавление дополнительного фильтра не возвращает результатов - PullRequest
1 голос
/ 14 июля 2010

Я пытаюсь запросить некоторые результаты, используя логический запрос. Однако запрос не возвращает никаких результатов.

Вот FilterQuery, который я запускаю. Это не дает результатов, даже если поле foo содержит bar, а поле foo3 содержит bar3. И я трижды проверил мои поля, чтобы убедиться, что поля существуют в индексе.

+(foo:bar foo2:bar2) +foo3:bar3

Теперь, если я удалю + foo3: bar3 из запроса, я верну результаты правильно. Также foo3: bar3 добавляется программно, поэтому я его не анализирую. Вот соответствующий код

//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;

Просто для справки, я в настоящее время устанавливаю поля для анализа, и для вектора задано значение With_positions_offsets

1 Ответ

1 голос
/ 14 июля 2010

Я перешел от использования TermQuery к использованию QueryParser, который, похоже, устранил проблему.

...