Lucene.Net Результаты поиска, чтобы выделить ключевые слова поиска - PullRequest
17 голосов
/ 10 октября 2008

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

1 Ответ

23 голосов
/ 10 октября 2008

Если у вас есть результат, вы можете получить индексированный текст, передать его вместе с вашим запросом с помощью метода, подобного следующему:

public string GeneratePreviewText(Query q, string text)
{
    QueryScorer scorer = new QueryScorer(q);
    Formatter formatter = new SimpleHTMLFormatter(highlightStartTag, highlightEndTag);
    Highlighter highlighter = new Highlighter(formatter, scorer);
    highlighter.SetTextFragmenter(new SimpleFragmenter(fragmentLength));
    TokenStream stream = new StandardAnalyzer().TokenStream(new StringReader(text));
    return highlighter.GetBestFragments(stream, text, fragmentCount, fragmentSeparator);
}
...