Можем ли мы получить позицию совпадающих позиций в результатах поиска Lucence.net? - PullRequest
0 голосов
/ 10 ноября 2011

Я использую Lucene.net для реализации функции полнотекстового поиска в приложении Asp.net. Страница результатов поиска должна выделить элементы соответствия. Я получил экземпляр Lucene.Net.Search.Hits и использовал метод .Doc (int i) для получения документа Lucene.

Но я не знаю, как получить позицию элемента совпадения с помощью существующего метода или свойства некоторого класса Lucene. Предоставляет ли Lucene.net какую-либо функцию для поддержки строки запроса при высокой освещенности?

Ответы [ 2 ]

1 голос
/ 10 ноября 2011

Вы можете использовать Highlighter или FastVectorHighlighter, которые можно найти в contrib

0 голосов
/ 11 ноября 2011

Как сказал предыдущий ответчик, вы должны использовать либо Highlighter, либо FastVectorHighlighter из contrib.

Вот пример использования Highlighter lib для получения выделенных фрагментов:

Formatter formatter = new SimpleHTMLFormatter("<span><b>", "</b></span>");
Lucene.Net.Highlight.Scorer scorer = new QueryScorer(query, field);
Lucene.Net.Highlight.Encoder encoder = new SimpleHTMLEncoder();
var highlighter = new Highlighter(formatter, encoder, scorer);
highlighter.SetTextFragmenter(new SimpleFragmenter(100));

string[] fragments = 
    highlighter.GetBestFragments(DefaultAnalyzer, field, doc.Get(field), 3);

Некоторые ошибки, связанные с маркерами:

  • Чтобы выделить поле, его необходимо добавить в индекс с помощью опции Field.Store.YES

  • Ваш запрос должен быть переписан перед передачей на маркер

  • Анализатор, который вы передаете в подсветку, должен быть таким же, какой вы используете для индексации и поиска
...