C# 在Lucene.net 2.9.2中突出显示整个句子

C# 在Lucene.net 2.9.2中突出显示整个句子,c#,lucene,search-engine,lucene.net,C#,Lucene,Search Engine,Lucene.net,目前我正在使用这个框架。作为我的搜索结果,我想实现结果页(asp.net)与突出显示的文本片段。我希望所选片段是整个句子,而不仅仅是几个单词 例如,如果我有文本: 知识产权是一种权利,是一种精英的权利,是劳动和财富的暂时性权利。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除了圣约翰以外,任何人都不可轻率行事,必须为自己的行为负责 我正在搜索丘比特我想得到碎片: 除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡 我现在掌握的代码是: var scor

目前我正在使用这个框架。作为我的搜索结果,我想实现结果页(asp.net)与突出显示的文本片段。我希望所选片段是整个句子,而不仅仅是几个单词

例如,如果我有文本:

知识产权是一种权利,是一种精英的权利,是劳动和财富的暂时性权利。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除了圣约翰以外,任何人都不可轻率行事,必须为自己的行为负责

我正在搜索丘比特我想得到碎片:

除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡

我现在掌握的代码是:

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);
var评分器=新的查询评分器(q);
var formatter=newsimplehtmlformatter(“,”);
var highlighter=新的highlighter(格式化程序、记分器);
highlighter.SetTextFragmenter(新的SimpleFragmenter(100));
var fragments=highlighter.GetBestFragments(流,文本,1);
但它只返回大小为100的文本范围


如果您有任何建议,我将不胜感激。

您想创建一个新的Fragmenter(类似于SimpleFragmenter)。您需要调整的功能是:

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

    return isNewFrag;
}

在获得正确的逻辑之前,这可能需要进行一些调整,但这会给您一个非常好的开端

您想要创建一个新的碎片器(类似于SimpleFragmenter)。您需要调整的功能是:

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

    return isNewFrag;
}
这可能需要一些调整,直到你得到正确的逻辑,但这应该给你一个很好的开端