Первый раз, используя Lucene
, поэтому заранее извиняюсь, если некоторая терминология неверна.Вопрос о новинке Lucene .Net
Я изменяю запрос Lucene
и не ожидаю ожидаемых результатов. Поисковый термин используется для создания логического запроса, и мне нужно добавить дополнительное поле для поиска. Это поле, которое называется tags
, уже является частью индекса (подтверждено Luke
для Lucene), но не было включено в поиск.
В настоящее булево запрос выглядит следующим образом:
if (!String.IsNullOrEmpty(settings.SearchTerm))
{
booleanQuery.Add(KeywordQuery(settings.SearchTerm, analyzer), Occur.Must);
}
private Query KeywordQuery(string searchTerm, StandardAnalyzer analyzer)
{
var parser = new MultiFieldQueryParser(Version.LUCENE_29, new[]
{
LuceneMedia.IndexFields._Title,
LuceneMedia.IndexFields.Description
}, analyzer);
string sTerm = LuceneUtilities.AddSearchWildCard(searchTerm);
Query query = LuceneUtilities.ParseQuery(sTerm, parser);
return query;
}
(indexFields
являются constants
, которые относятся к именам полей)
Я думал, что это будет случай расширения массив тегов, как так:
new[]
{
LuceneMedia.IndexFields._Title,
LuceneMedia.IndexFields.Description,
LuceneMedia.IndexFields.Tags
},
но не выкупленных никаких результатов при поиске tag
Я знаю, существует, но результаты п или title
Я знаю, что существует. поэтому я подумал, может быть, мне следует изменить OCCURS.MUST
на OCCURS.SHOULD
, но tag
поиск привел все результаты.
Что я сделал не так?