【问题标题】:How to find relevant area in text?如何在文本中找到相关区域?
【发布时间】:2014-12-04 08:18:21
【问题描述】:
【问题讨论】:
标签:
algorithm
information-retrieval
text-mining
【解决方案1】:
您可以为此使用Lucene Highlighter。 Lucene 的 highlight 包包含提供“上下文中的关键字”功能的类,这些功能通常用于突出显示结果页面文本中的搜索词。
Highlighter 类是中心组件,可用于提取一段文本中最有趣的部分并在 Fragmenter、Fragment Scorer 和 Formatter 类的帮助下突出显示它们。 Highlighter 类的 getBestTextFragments 方法从文档中选择最可能相关的文本。
一个示例 sn-p:
Highlighter highlighter = new Highlighter(htmlFormatter, new QueryScorer(query));
for (int i = 0; i < 10; i++) {
int id = hits.scoreDocs[i].doc;
Document doc = searcher.doc(id);
TokenStream tokenStream = TokenSources.getAnyTokenStream(searcher.getIndexReader(), id, "body", analyzer);
TextFragment[] frag = highlighter.getBestTextFragments(tokenStream, text, false, 10);
...
...