Lucene 4.7 --高亮显示
jar
lucene-analyzers-common-4.7.0.jar
lucene-analyzers-smartcn-4.7.0.jar
lucene-core-4.7.0.jar
lucene-queryparser-4.7.0.jar
lucene-memory-4.7.0.jar
lucene-queries-4.7.0.jar
lucene-highlighter-4.7.0.jar
先一段查询代码
Set<String> fields = new HashSet<String>();
fields.add("carId");
fields.add("carName"); org.apache.lucene.document.Document document = searcher.doc(scoreDoc.doc, fields);
CarVO resultVO = new CarVO();
resultVO.setCarId(document.getValues("carId")[0]);
resultVO.setCarName(document.getValues("carName")[0]);
return resultVO;
在这里,如果说我们通过carName搜索到了某个car,那么我们希望能够高亮显示这个carName中匹配的值,那么就对这个resultVO中setCarName时进行高亮处理,方法如下:
这样调用:
resultVO.setCarName(highlightFormat(document.getValues("carName")[0],"carName",query,scoreDoc,document));
实现方法:
private String highlightFormat(String value, String field,
Query query, ScoreDoc scoreDoc, Document document) throws Exception { QueryScorer scorer = new QueryScorer(query,field);
SimpleHTMLFormatter hlightFormater = new SimpleHTMLFormatter("<span class=\"hlight\">", "</span>");
Highlighter hl = new Highlighter(hlightFormater,scorer);
hl.setTextFragmenter(new SimpleSpanFragmenter(scorer));
TokenStream stream = TokenSources.getAnyTokenStream(
searcher.getIndexReader(), scoreDoc.doc, field, document, analyzer); String valueWithHighlight = hl.getBestFragment(stream, value);
return valueWithHighlight;
}
searcher就是IndexSearcher,anlyzer是分词器,这个我一般都作为静态变量长时间持有
其余的这一“大堆”东西我并不打算做太多说明,一则是这里和原来的版本变化不大,二是基本按照这些点已经足够满足基本的开发应用需求了,唯一需要大家关注的,也需要大家自己处理得,就是
SimpleHTMLFormatter hlightFormater = new SimpleHTMLFormatter("<span class=\"hlight\">", "</span>");
当然这里提醒一句,如果是你的carName这种属性是可以让用户自定义输入的,请一定要注意对注入攻击的拦截
Lucene 4.7 --高亮显示的更多相关文章
- 关于Lucene.net 中高亮显示关键词的深究
这几天一直在学习lucene,也写了3篇自己总结的知识点,本以为很容易上手的东西,但是却遇到了一个很棘手的问题,借此,希望可以跟大家探讨一下 问题:使用盘古高亮显示组件后,如搜索“mp3 player ...
- Lucene 09 - 什么是Lucene的高亮显示 + Java API实现高亮显示
目录 1 什么是高亮显示 2 高亮显示实现 2.1 配置pom.xml文件, 加入高亮显示支持 2.2 代码实现 2.3 自定义html标签高亮显示 1 什么是高亮显示 高亮显示是全文检索的一个特点, ...
- lucene 3.0.2 搜索
1.lucene 词频 转载:http://mxdxm.iteye.com/blog/989031 lucene in action作为action系列,确实坚持了其实用性的特色.全书花了很大的篇幅来 ...
- 关于Lucene全文检索相关技术
Lucene技术专门解决海量数据下的模糊搜索问题. Lucene主要完成的是数据预处理.建立倒排索引,及搜索.排名.高亮显示等功能 全文检索相关词语概要: 单词和文档矩阵: 文档(Document): ...
- Lucene入门+实现
Lucene简介详情见:(https://blog.csdn.net/Regan_Hoo/article/details/78802897) lucene实现原理 其实网上很多资料表明了,lucene ...
- Lucene入门及实际项目应用场景
导入maven依赖 <dependency> <groupId>org.apache.lucene</groupId> <artifactId>luce ...
- 【课程分享】基于Lucene4.6+Solr4.6+Heritrix1.14+S2SH实战开发从无到有垂直搜索引擎
对这个课程有兴趣的朋友,能够加我的QQ2059055336和我联系,能够和您分享. 课程介绍:最有前途的软件开发技术--搜索引擎技术 搜索引擎作为互联网发展中至关重要的一种应用,已经成为互联网各个 ...
- Lucene.net 高亮显示搜索词
网站搜索关键词,往往搜索的结果中,要把用户搜索的词突出显示出来,这就是高亮搜索词的含义.而lucene也恰恰支持这样的操作.在此,我用的是盘古的组件,代码如下: PanGu.HighLight.Sim ...
- Lucene基础(三)-- 中文分词及高亮显示
Lucene分词器及高亮 分词器 在lucene中我们按照分词方式把文档进行索引,不同的分词器索引的效果不太一样,之前的例子使用的都是标准分词器,对于英文的效果很好,但是中文分词效果就不怎么样,他会按 ...
随机推荐
- python中thread模块中join函数
http://www.cnblogs.com/vingi/articles/2657790.html for i in range(10): t = ThreadTest(i) thread_arr. ...
- Mango Weekly Training Round #3 解题报告
A. Codeforces 92A Chips 签到题.. #include <iostream> #include <cstdio> #include <cstring ...
- 三维网格形变算法(Laplacian-Based Deformation)
网格上顶点的Laplace坐标(均匀权重)定义为:,其中di为顶点vi的1环邻域顶点数. 网格Laplace坐标可以用矩阵形式表示:△=LV,其中,那么根据网格的Laplace坐标通过求解稀疏线性方程 ...
- Linux由管道组成的值得学习的命令
1.Linux查找不以#开头的行的命令如:cat /etc/vsftpd/vsftpd.conf | grep -v "#"
- iOS自带地图纠偏问题
…………纠偏 篇………….. 1. 涉及接口:<CoreLocation/CoreLocation.h> 2. 核心代码解读: if ([CLLocationManager locatio ...
- 在PLSQL中编译复杂的java(转)
原文地址:在PLSQL中编译复杂的java PLSQL中可以编译运行JAVA程序. 一个简单的例子: create or replace and compile java source named x ...
- php基础22:上传并且保存文件
<?php /* 文件上传的限制 && 保存被上传的文件 在这个脚本中,我们增加了对文件上传的限制.用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb: ...
- [iOS翻译]《iOS 7 Programming Pushing the Limits》系列:你可能不知道的Objective-C技巧
简介: 如果你阅读这本书,你可能已经牢牢掌握iOS开发的基础,但这里有一些小特点和实践是许多开发者并不熟悉的,甚至有数年经验的开发者也是.在这一章里,你会学到一些很重要的开发技巧,但这仍远远不够,你还 ...
- Java Concurrency in Practice 读书笔记 第二章
第二章的思维导图(代码迟点补上):
- GSON
{ "data": [ { "children": [ { "id": 10007, "title": "北京 ...