博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lucene查询结果高亮
阅读量:6210 次
发布时间:2019-06-21

本文共 3645 字,大约阅读时间需要 12 分钟。

检索结果高亮

实现效果:

这里写图片描述

核心代码

package ucas.ir.lucene;import java.io.File;import java.io.IOException;import javax.print.Doc;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.TokenStream;import org.apache.lucene.analysis.core.KeywordAnalyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.index.DirectoryReader;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.queryparser.classic.QueryParser;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.Query;import org.apache.lucene.search.TopDocs;import org.apache.lucene.search.highlight.Fragmenter;import org.apache.lucene.search.highlight.Highlighter;import org.apache.lucene.search.highlight.QueryScorer;import org.apache.lucene.search.highlight.SimpleHTMLFormatter;import org.apache.lucene.search.highlight.SimpleSpanFragmenter;import org.apache.lucene.search.highlight.TokenSources;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.apache.lucene.util.Version;import org.wltea.analyzer.lucene.IKAnalyzer;public class IndexSearch {    public static void main(String[] args) {        Directory directory = null;        try {            File indexpath = new File("/Users/yp/Documents/workspace/UCASIR/WebContent/index");            if (indexpath.exists() != true) {                indexpath.mkdirs();            }            // 设置要查询的索引目录            directory = FSDirectory.open(indexpath);            // 创建indexSearcher            DirectoryReader dReader = DirectoryReader.open(directory);            IndexSearcher searcher = new IndexSearcher(dReader);            // 设置分词方式            Analyzer analyze2 = new StandardAnalyzer(Version.LUCENE_43);// 标准分词            Analyzer analyzer = new IKAnalyzer();            // 设置查询域            String field="news_title";            QueryParser parser = new QueryParser(Version.LUCENE_43, field, analyzer);            // 查询字符串            Query query = parser.parse("阿法狗");            QueryScorer scorer=new QueryScorer(query,field);            SimpleHTMLFormatter fors=new SimpleHTMLFormatter("", "");            Highlighter highlighter=new Highlighter(fors, scorer);            System.out.println("query:" + query.toString());            // 返回前10条            TopDocs topDocs = searcher.search(query, 10);            if (topDocs != null) {                System.out.println("符合条件第文档总数:" + topDocs.totalHits);                for (int i = 0; i < topDocs.scoreDocs.length; i++) {
Document doc = searcher.doc(topDocs.scoreDocs[i].doc); TokenStream tokenStream=TokenSources.getAnyTokenStream(searcher.getIndexReader(), topDocs.scoreDocs[i].doc, field, analyzer); Fragmenter fragment=new SimpleSpanFragmenter(scorer); highlighter.setTextFragmenter(fragment); //高亮news_title域 String str=highlighter.getBestFragment(tokenStream, doc.get("news_title"));//获取高亮的片段,可以对其数量进行限制 System.out.println("高亮title:"+str); tokenStream=TokenSources.getAnyTokenStream(searcher.getIndexReader(), topDocs.scoreDocs[i].doc, "news_summary", analyzer); str=highlighter.getBestFragment(tokenStream, doc.get("news_summary"));//获取高亮的片段,可以对其数量进行限制 System.out.println("高亮summary:"+str); } } directory.close(); dReader.close(); } catch (Exception e) { e.printStackTrace(); } }}

结果:

这里写图片描述

转载于:https://www.cnblogs.com/hainange/p/6153791.html

你可能感兴趣的文章
物联网市场逼近万亿规模 数据分析弱成一大掣肘
查看>>
Win 10新版14322将推送 PC用户悲剧
查看>>
福建、福州、厦门入选首批健康医疗大数据中心与产业园建设试点省市
查看>>
大数据重构电商商业逻辑
查看>>
承蓝科技姜意:从小作坊到“中国脑计划”
查看>>
Oracle首席执行官Hurd:云迁移由业务现实驱动 将有两大SaaS阵营
查看>>
石油公司高管假扮马斯克窃取机密 被特斯拉提起控诉
查看>>
这三家公司将要改变家庭无线路由器
查看>>
中兴通讯完成5G国家试验mMTC海量连接测试
查看>>
ERP实施中最可怕的是需求变更
查看>>
记录ICallbackEventHandler 同时并发访问容易引发的问题
查看>>
云安全的障碍不是技术!
查看>>
安防:激光对射周界报警系统原理解析系统组成
查看>>
2017年关于物联网的五大预测
查看>>
东芝将在家电和半导体等部门裁员约1万人
查看>>
贵阳市乌当区前三季度大数据产业产值60亿元
查看>>
从安防行业网络化态势 看门禁市场发展风向
查看>>
MQC手游行业解决方案
查看>>
全球交换机厂商最新格局
查看>>
购买安防数字监控关键组件的方法
查看>>