搜索学习入门--使用LuceneHighlighter高亮显示Lucene检索结果的关键词
来源:互联网 发布:asp在线投稿系统 源码 编辑:程序博客网 时间:2024/06/05 11:25
在上一篇文章搜索学习入门–Lucene初体验(Lucene索引的增删改查)的基础上,我们进行对Lucene检索结果的高亮显示。
第一步:在增加Lucene高亮模块依赖
<dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-highlighter</artifactId> <version>4.7.2</version></dependency>
第二步:高亮显示Lucene检索结果的关键词
package top.yuyufeng.learn.lucene.demo1;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.index.DirectoryReader;import org.apache.lucene.index.IndexReader;import org.apache.lucene.index.IndexWriterConfig;import org.apache.lucene.queryparser.classic.ParseException;import org.apache.lucene.queryparser.classic.QueryParser;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.Query;import org.apache.lucene.search.ScoreDoc;import org.apache.lucene.search.TopDocs;import org.apache.lucene.search.highlight.*;import org.apache.lucene.store.Directory;import org.apache.lucene.store.SimpleFSDirectory;import org.apache.lucene.util.Version;import java.io.File;import java.io.IOException;/** * @author yuyufeng * @date 2017/11/21 */public class LuceneHighlighterDemo { public static void main(String[] args) { // Lucene Document的域名 String fieldName = "blog"; Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_47); Directory directory = null; IndexReader ireader = null; IndexSearcher isearcher; try { //索引目录 directory = new SimpleFSDirectory(new File("D://test/lucene_index")); // 配置IndexWriterConfig IndexWriterConfig iwConfig = new IndexWriterConfig(Version.LUCENE_47, analyzer); iwConfig.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND); // 搜索过程********************************** // 实例化搜索器 ireader = DirectoryReader.open(directory); isearcher = new IndexSearcher(ireader); String keyword = "达摩院"; // 使用QueryParser查询分析器构造Query对象 QueryParser qp = new QueryParser(Version.LUCENE_47, fieldName, analyzer); qp.setDefaultOperator(QueryParser.OR_OPERATOR); // and or 跟数据库查询语法类似 Query query = qp.parse(keyword); System.out.println("Query = " + query); // 搜索相似度最高的5条记录 TopDocs topDocs = isearcher.search(query, 5); System.out.println("命中:" + topDocs.totalHits); // 遍历输出结果 ScoreDoc[] scoreDocs = topDocs.scoreDocs; Highlighter highlighter = new Highlighter(new SimpleHTMLFormatter("<B>", "</B>"), //高亮格式,用<B>标签包裹 new QueryScorer(query)); Fragmenter fragmenter = new SimpleFragmenter(100); //高亮后的段落范围在100字内 highlighter.setTextFragmenter(fragmenter); for (int i = 0; i < topDocs.totalHits; i++) { Document targetDoc = isearcher.doc(scoreDocs[i].doc); System.out.println("内容:" + highlighter.getBestFragment(analyzer, fieldName, targetDoc.get("blog"))); //只对“blog”属性高亮 } } catch (ParseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (InvalidTokenOffsetsException e) { e.printStackTrace(); } finally { if (ireader != null) { try { ireader.close(); } catch (IOException e) { e.printStackTrace(); } } if (directory != null) { try { directory.close(); } catch (IOException e) { e.printStackTrace(); } } } }}
第三步:执行查看结果
Query = blog:达 blog:摩 blog:院
命中:2
内容:10月11日杭州云栖大会上,马云表达了对新建成的阿里巴巴全球研究院—阿里巴巴达摩院的愿景,希望达摩院二十年内成为世界第一大经济体,服务世界二十亿人,创造一亿个工作岗位。
内容:达摩院一定也必须要超越英特尔,必须超越微软,必须超越IBM,因为我们生于二十一世纪,我们是有机会后发优势的。
阅读全文
0 0
- 搜索学习入门--使用LuceneHighlighter高亮显示Lucene检索结果的关键词
- php搜索结果关键词高亮显示
- Lucene —— 搜索结果高亮显示
- Lucene SandBox包中highlighter(高亮显示搜索结果包)存在的问题
- 发一个Lucene 2.4.0对搜索结果高亮显示的代码
- 一个Lucene 2.4.0对搜索结果高亮显示的代码
- js实现搜索结果关键词高亮
- 搜索结果的高亮显示实现
- 使用lucene将索引结果进行高亮显示
- 搜索结果高亮显示
- 搜索结果高亮显示
- Android搜索列表关键词高亮显示
- 一个lucene搜索高亮显示的例子。
- Hibernate Search使用以及搜索结果高亮显示
- Lucene 3.6.2关键词高亮显示实现例子
- lucene学习---高亮显示
- Lucene+HighLighter 搜索关键字高亮显示
- 一步一步跟我学习lucene(11)---lucene搜索之高亮显示highlighter
- Vmware虚拟机下三种网络模式配置
- Windows Defender SmartScreen阻止应用运行
- 朋友圈的点赞实现。
- React Native Application 项目名 has not been registered.
- Android沉浸式状态栏
- 搜索学习入门--使用LuceneHighlighter高亮显示Lucene检索结果的关键词
- 复制大文件
- My first blog
- python yield理解
- macbook使用ZOC连接Linux云主机
- c/c++在windows下获取时间和计算时间差的几种方法总结
- Android签名二: package.xml packagelist.xml分析
- 酢浆草2017记录
- [Leetcode] 469. Convex Polygon 解题报告