Я пытаюсь запросить некоторые результаты, используя логический запрос. Однако запрос не возвращает никаких результатов.
Вот 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