Я получаю проблему, когда объединяю несколько запросов с логическим запросом Lucene.net
(версия 2.9).
Пожалуйста, посмотрите структуру документа, которую я проиндексировал.
ID Make Model Price MakeDate CreatedBy
1 Ford Fiesta 240000 06/23/2011 anil
2 Ford Focus 250000 06/20/2011 anil
3 Vauxhall Astra 200000 06/21/2011 anil
4 Ford Focus LX 230000 06/21/2011 anilkumar
5 Ford Focus XI 260000 06/20/2011 anil
Мое намерение - получить записи, которые содержат focus
в любом из полей, например, в полях Model или Make, .. иCreatedBy
равно Anil
.
Для этого я написал следующие запросы:
WildcardQuery query4 = new WildcardQuery(new Term("Make", "*focus*"));
WildcardQuery query5 = new WildcardQuery(new Term("Model", "*focus*"));
var queryParser3 = new QueryParser(Version.LUCENE_29, "CreatedBy", analyzer1);
var query3 = queryParser3.Parse("anil");
objBool.Add(query3, BooleanClause.Occur.MUST);
objBool.Add(query4, BooleanClause.Occur.SHOULD);
objBool.Add(query5, BooleanClause.Occur.SHOULD);
Когда я выполню это, на самом деле мне нужно получить только две записи, то есть 2-ю и 5-ю.Но я получаю четыре записи, то есть, кроме 4-го.
Насколько я понимаю, он возвращает все записи, которые CreatedBy
равны Anil
.
Пожалуйста, предложите мне, как получить требуемый результат и какие изменения необходимо внестисделано.