1
현재 코드를 사용하여 lucene 출력에서 조각을 강조 표시하지만 결과는 항상 문자열로 검색됩니다. 내가 검색 무엇이든lucene highlighter (3.0)를 사용하여 쿼리 용어를 강조 표시 한 결과 만 표시
var parser = new MultiFieldQueryParser(new[]{"contents","PageName"},
new StandardAnalyzer());
Query query = parser.Parse(searchString);
Hits results = searcher.Search(query);
var hits = new List<LuceneSearchResult>();
for (int index = 0; index < results.Length(); index++)
{
Document document = results.Doc(index);
var searchResult = new LuceneSearchResult();
searchResult.Document = document;
searchResult.Query = searchString;
searchResult.Id = document.GetField("ID").StringValue();
searchResult.Score = results.Score(index);
hits.Add(searchResult);
}
강조 표시된 조각에 대해 반환되는 문자열과 정확히 동일합니다 : 그것은 여기에 도움이되는 경우
var parser = new MultiFieldQueryParser(new[] { "contents", "PageName" },
new StandardAnalyzer());
Query query = parser.Parse(Query);
QueryScorer scorer = new QueryScorer(query);
Formatter formatter = new SimpleHTMLFormatter(config.HighlightFormatterPrefix,
config.HighlightFormatterSuffix);
Highlighter highlighter = new Highlighter(formatter, scorer);
highlighter.SetTextFragmenter(new SimpleFragmenter(100));
TokenStream stream = new StandardAnalyzer().TokenStream("contents",
new StringReader(Query));
return highlighter.GetBestFragments(stream, Query, 2, ".");
쿼리에 사용되는 코드입니다.