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

本文共 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

你可能感兴趣的文章
STL 笔记(四) 迭代器 iterator
查看>>
2017"百度之星"程序设计大赛 - 复赛1003&&HDU 6146 Pokémon GO【数学,递推,dp】
查看>>
开源倾情奉献:基于.NET打造IP智能网络视频监控系统
查看>>
[LeetCode] Valid Parenthesis String 验证括号字符串
查看>>
linux之 ssh连接服务器,WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
查看>>
Android连接热点的Socket文件传输
查看>>
各大SRC中的CSRF技巧
查看>>
Docker for Windows 使用入门
查看>>
c代码片段-注解
查看>>
【Django】Web应用开发经由
查看>>
SpringBoot(九)-- SpringBoot JDBC
查看>>
Spring + Mybatis - 原始dao开发整合 与 Mapper代理整合
查看>>
基于Centos搭建nginx+uwsgi运行django环境
查看>>
context switch
查看>>
Oracle awr报告生成操作步骤
查看>>
【DB2】DB2使用IMPORT命令导入含有自增长列的表报错处理
查看>>
微服务之springCloud-docker-comsumer(三)
查看>>
dhcpcd守护进程分析【转】
查看>>
Linux - 理不清的权限chmod与chown区别
查看>>
TCP协议疑难杂症全景解析
查看>>