Lucene.net突出显示文本中的搜索词
我正在使用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
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(分析器,“内容”,搜索文本);仍然没有得到完整的原始文件。你能提供一个代码示例吗。很抱歉打扰你。谢谢你的编辑,我已经做了完全相同的事情。抱歉,我仍然不清楚如何获取突出显示搜索文本的整个文档?