Выделение всего предложения в Lucene.net 2.9.2 - PullRequest
1 голос
/ 05 апреля 2011

В настоящее время я работаю с фреймворком Lucene.net 2.9.2 .В результате моего поиска я хотел бы получить страницу результатов (asp.net) с выделенным фрагментом текста.Я хотел бы, чтобы выбранный фрагмент представлял собой целое предложение , а не только несколько слов.

Например, если у меня есть текст:

Lorem ipsum dolor sit ametЭксел, являющийся приверженцем элиты.Ut enim ad minim veniam, quis nostrud упражнение ullamco labouris nisi ut aliquip ex ea кассовый следствие.Duis aute irure dolor в репереендерит в завитке Velit esse cillum dolore eu fugiat nulla pariatur.Excepteur sint occaecat cupidatat непрезидентный, иск в виновном виновнике deserunt mollit anim id est labour.

и я ищу cupidatat Я хотел бы получить фрагмент:

Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est labour.

Код, которыйУ меня сейчас есть:

var scorer = new QueryScorer(q);
var formatter = new SimpleHTMLFormatter("<div>", "</div>");

var highlighter = new Highlighter(formatter, scorer);
highlighter.SetTextFragmenter(new SimpleFragmenter(100));

var fragments = highlighter.GetBestFragments(stream, text, 1);

но он возвращает только текстовый диапазон размером 100.

Буду благодарен за любое предложение.

1 Ответ

1 голос
/ 06 апреля 2011

Вы хотите создать новый Fragmenter (аналогично SimpleFragmenter).Вам нужно настроить следующую функцию:

public virtual bool IsNewFragment(Token token)
{
    bool isNewFrag = token.EndOffset() >= (fragmentSize * currentNumFrags);
    if (isNewFrag)
    {
        currentNumFrags++;
    }

    return isNewFrag;
}

Вероятно, потребуется некоторая корректировка, пока вы не получите правильную логику, но это должно дать вам довольно хороший старт

...