Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene.net突出显示文本中的搜索词_Lucene_Lucene.net - Fatal编程技术网

Lucene.net突出显示文本中的搜索词

Lucene.net突出显示文本中的搜索词,lucene,lucene.net,Lucene,Lucene.net,我正在使用Lucene.net搜索给定的文档。一旦搜索完成,它应该在文档中突出显示搜索的术语。我看到过返回最佳片段的示例。但我需要强调的是主要内容 using (StandardAnalyzer standardAnalyzer = new StandardAnalyzer(Version.LUCENE_30, stopWords)) { QueryParser parser = new QueryParser(Version.LUCENE_30

我正在使用Lucene.net搜索给定的文档。一旦搜索完成,它应该在文档中突出显示搜索的术语。我看到过返回最佳片段的示例。但我需要强调的是主要内容

     using (StandardAnalyzer standardAnalyzer = new StandardAnalyzer(Version.LUCENE_30, stopWords))
        {
            QueryParser parser = new QueryParser(Version.LUCENE_30, "Content", standardAnalyzer);
            parser.AllowLeadingWildcard = true;
            Query qry = parser.Parse(searchText);
            Directory indexDir = CreateRAMDirectory(htmlContent);

            IndexReader reader = IndexReader.Open(indexDir, true);
            IndexSearcher searcher = new IndexSearcher(reader);
            searcher.SetDefaultFieldSortScoring(true, true);

            IFormatter formatter = new SimpleHTMLFormatter("<span style=\"font-weight:bold; background-color:yellow;\">", "</span>");
            SimpleFragmenter fragmenter = new SimpleFragmenter(1000);
            QueryScorer scorer = null;
            scorer = new QueryScorer(qry);

            ScoreDoc[] hits = searcher.Search(qry, null, 10000, Sort.RELEVANCE).ScoreDocs;

            Highlighter highlighter = new Highlighter(formatter, scorer);
            highlighter.TextFragmenter = fragmenter;



            foreach (var result in hits)
            {
                int docId = result.Doc;
                float score = result.Score;
                Document doc = searcher.Doc(docId);
                Lucene.Net.Analysis.TokenStream stream = standardAnalyzer.TokenStream("Content", new IO.StringReader(searchText));
        String highlighterData = highlighter.GetBestFragments(stream, searchText, 1000, "");

            }

        }
使用(StandardAnalyzer StandardAnalyzer=新的StandardAnalyzer(Version.LUCENE_30,stopWords))
{
QueryParser parser=新的QueryParser(Version.LUCENE_30,“Content”,standardAnalyzer);
parser.allowReadingwildcard=true;
Query qry=parser.Parse(searchText);
目录indexDir=CreateRAMDirectory(htmlContent);
IndexReader=IndexReader.Open(indexDir,true);
IndexSearcher search=新的IndexSearcher(阅读器);
searcher.setDefaultFieldSortCoring(true,true);
IFormatter格式化程序=新的SimpleHTMLFormatter(“,”);
SimpleFragmenter fragmenter=新的SimpleFragmenter(1000);
QueryScorer scorer=null;
记分员=新的查询记分员(qry);
ScoreDoc[]hits=searcher.Search(qry,null,10000,Sort.RELEVANCE);
Highlighter Highlighter=新的Highlighter(格式化程序、记分器);
highlighter.TextFragmenter=碎片器;
foreach(var结果为点击数)
{
int docId=result.Doc;
浮动分数=结果分数;
Document doc=searcher.doc(docId);
Lucene.Net.Analysis.TokenStream=standardAnalyzer.TokenStream(“内容”,新IO.StringReader(searchText));
字符串highlighterData=highlighter.GetBestFragments(流,searchText,1000,“);
}
}

我是Lucene.net的新手,如何突出显示整个文档的搜索词内容而不是片段?

碎片程序控制返回的文本块的大小。要使用整个字段内容,只需使用,而不是使用
SimpleFragmenter

Fragmenter fragmenter = new NullFragmenter();
.....
highlighter.TextFragmenter = fragmenter;

碎片器控制返回的文本块的大小。要使用整个字段内容,只需使用,而不是使用
SimpleFragmenter

Fragmenter fragmenter = new NullFragmenter();
.....
highlighter.TextFragmenter = fragmenter;

我试过这个。NullFragmenter fragmenter=新的NullFragmenter();fragmenter.Start(entireHtmlContent,standardAnalyzer.TokenStream(“内容”,新IO.StringReader(searchText));String text=highlighter.GetBestFragment(分析器,“内容”,搜索文本);仍然没有得到完整的原始文件。你能提供一个代码示例吗。很抱歉打扰你。谢谢你的编辑,我已经做了完全相同的事情。抱歉,我仍然不清楚如何突出显示搜索文本的整个文档?我尝试了这个。NullFragmenter fragmenter=新的NullFragmenter();fragmenter.Start(entireHtmlContent,standardAnalyzer.TokenStream(“内容”,新IO.StringReader(searchText));String text=highlighter.GetBestFragment(分析器,“内容”,搜索文本);仍然没有得到完整的原始文件。你能提供一个代码示例吗。很抱歉打扰你。谢谢你的编辑,我已经做了完全相同的事情。抱歉,我仍然不清楚如何获取突出显示搜索文本的整个文档?