В каком поле был мой текст для поиска в Lucene при использовании MultiFieldQueryParser? - PullRequest
2 голосов
/ 22 мая 2009

Я использую Lucene.Net MultiFieldQueryParser для поиска по нескольким полям в моих документах. Я хочу узнать, в каком поле был найден текст. Например, мой поиск может выглядеть так:

var parser = new MultiFieldQueryParser(new string[] {"question","answer"}, analyzer);
var query = parser.Parse(searchphrase);

for(int idx=0; idx<hits.Length() ++idx)
{
     var doc = hits.Doc(i);
     // was this hit found in "answer" or "question"??
}

Я хочу определить, была ли найдена поисковая фраза в ответ или вопрос поле

Ответы [ 2 ]

3 голосов
/ 23 мая 2009

Единственный способ узнать это - хранить поля, извлекать их для каждого удара и самостоятельно проверять их на совпадение.

Попадание может быть вызвано тем, что в вопросе найдены некоторые термины поисковой фразы, а остальные - в ответе. Если вы будете искать вопросы и ответы вместе, вы не сможете легко определить, какой был какой.

1 голос
/ 23 мая 2009

В целях отладки вы можете использовать метод Lucene объяснение () , который проведет вас через сопоставление. Это так же дорого, как и сам поиск, поэтому это не так хорошо для производства. См. Также Отладка проблем релевантности в поиске Гранта Ингерсолла о других способах получения этой информации.

...