В Lucene.Net мне нужно создать запрос, чтобы ограничить поиск определенным списком терминов для определенного поля.
Например, мне нужно, чтобы "AutoMake" был "Ford" или "Chevy". Так что, пока значение «AutoMake» является одним из этих двух, у нас все хорошо.
Вот как я формирую свой BooleanQuery, но я не думаю, что это правильно:
var query1 = new TermQuery(new Term("AutoMake", "Ford"));
var query2 = new TermQuery(new Term("AutoMake", "Chevy"));
var thisFilter = new BooleanQuery();
thisFilter.Add(query1, BooleanClause.Occur.MUST);
thisFilter.Add(query2, BooleanClause.Occur.MUST);
«ДОЛЖЕН» там эффективно «И» запрос, поэтому «AutoMake» должен быть и «Форд» и «Шевроле», что неправильно. (Я читал в BooleanClause «СЛЕДУЕТ», но я тоже не думаю, что это правильно.)
По сути, мне нужен оператор BooleanClause для "ИЛИ". Мне нужен способ инкапсуляции двух запросов, чтобы, если один из них был истинным, тогда весь запрос был верным? (Потому что у меня есть несколько таких запросов, поступающих в более крупный запрос в виде предложений.)
Вот что было бы замечательно.
var query = new AnyOfTheseTermsQuery();
query.Add(new Term("AutoMake", "Ford"));
query.Add(new Term("AutoMake", "Chevy"));
Это то, что я ищу. Это существует?