2013-09-13 2 views
0

Первый раз, используя 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 поиск привел все результаты.

Что я сделал не так?

ответ

0

Это правильный способ поиска нескольких полей, к сожалению, я не переиндексировал их!

Смежные вопросы