Я использую Lucene.net для поиска документа. Требование - когда поиск выполняется, он должен выделить искомый термин в документе. Я видел примеры, которые возвращают лучшие фрагменты. Но мне нужно выделить основной контент.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, "");
}
}
Я новичок в Lucene.Net, как я могу получить весь документ искали термин содержания выделены, а не фрагменты?
Я пробовал это. NullFragmenter fragmenter = new NullFragmenter(); fragmenter.Start (wholeHtmlContent, standardAnalyzer.TokenStream («Содержимое», новый IO.StringReader (searchText))); Строковый текст = highlighter.GetBestFragment (анализатор, «Содержимое», searchText); По-прежнему не получается полный оригинальный документ. Не могли бы вы включить образец кода. Извините за ошибку. – JenonD
спасибо за редактирование, я сделал то же самое. Извините, я все еще не понимаю, как выделить весь документ с искомым текстом? – JenonD