Как подсветить ключевые слова в результатах поиска Lucene.NET?

2

Имеется запрос и результат выполнения этого запроса на индексе Lucene.NET. Вопрос состоит в том, как можно подсветить найденные вхождения слов запроса в результатах. Обязательно ли для этого хранить текст в индексе?

Новые ответы


0

Нужно использовать проект Highlighter из поставки Lucene.NET (папка contrib\Highlighter.Net). Это порт аналогичного проекта для Java. Вот пример использования:

var scorer = new QueryScorer(queryObject);
var highlighter = new Highlighter(scorer);
highlighter.SetTextFragmenter(new SimpleFragmenter(300));
var highlitedFragment = highlighter.GetBestFragment(
    analyzer, field, textToHighlight);

Объект Highlighter осуществляет анализ текста на основе запроса и возвращает фрагменты, содержащие наибольшее число вхождений ключевых слов.

По умолчанию все вхождения оборачиваются тегами <b></b>. Это поведение можно изменить, указав объект Formatter:

// ...
var highlighter = new Highlighter(
    new SimpleHTMLFormatter("<SPAN class='selected'>", "</SPAN>"), scorer);

Размер возвращаемых фрагментов можно менять в объекте Fragmenter:

highlighter.SetTextFragmenter(new SimpleFragmenter(300));

v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.