【发布时间】:2017-06-14 06:28:32
【问题描述】:
我正在使用 Lucene 来索引一组句子。我的查询涉及两个“实体”,我创建了一个类似这样的邻近查询:
"EntityA EntityB"~22
我想检索包含这两个实体的所有句子,最大范围为 22 个字符。 现在我想使用 Lucene Highlighter 来检索两个实体之间的单词。 我正在使用这样的代码将内容拆分为片段,但我不知道如何将片段设置在两个实体之间的精确点。
for (int i = 0; i < numTotalHits; i++) {
int id = hits[i].doc;
Document doc = searcher.doc(hits[i].doc);
String text = doc.get("content");
TokenStream tokenStream = TokenSources.getAnyTokenStream(searcher.getIndexReader(), id , "content", analyzer);
String[] frag = getFragmentsWithHighlightedTerms(analyzer, query, "content", text, 10, 10);
for (int j = 0; j < frag.length; j++) {
System.out.println((frag[j].toString()));
}
我的目标是检索实体内的文本,例如:
entity1 --> Canada
entity2 --> Ottawa
sentence --> Natural Resources Canada, Canadian Forest Service, Ottawa.
result --> , Canadian Forest Service,
【问题讨论】:
标签: solr lucene information-retrieval lucene-highlighter