elasticsearch-jdbc 2.0+是怎么用的?
Elasticsearch • twinboss 回复了问题 • 4 人关注 • 3 个回复 • 4817 次浏览 • 2016-10-11 12:51
marvel插件,不能显示数据
默认分类 • medcl 回复了问题 • 2 人关注 • 1 个回复 • 5622 次浏览 • 2016-07-05 23:24
关于商品不同属性不同的mapping应该如何建立
Elasticsearch • liuping 回复了问题 • 5 人关注 • 4 个回复 • 4245 次浏览 • 2017-05-09 09:18
kibana如何使用metric显示进过过滤后的统计信息
Kibana • yqcute 回复了问题 • 3 人关注 • 2 个回复 • 9653 次浏览 • 2016-08-26 08:50
请问kibana如何添加离线地图
Kibana • medcl 回复了问题 • 3 人关注 • 1 个回复 • 8477 次浏览 • 2016-07-05 23:21
我的问题:redis->logstash->mysql
回复Logstash • longjq 回复了问题 • 1 人关注 • 1 个回复 • 6232 次浏览 • 2016-06-29 18:46
Correlation问题
Elasticsearch • billzy 回复了问题 • 3 人关注 • 2 个回复 • 4439 次浏览 • 2016-06-30 10:45
ES远程调试的问题:
Elasticsearch • nihao 回复了问题 • 2 人关注 • 2 个回复 • 5420 次浏览 • 2016-07-13 18:41
spark sql写es时,多值字段无法直接写入
Elasticsearch • joeywen 回复了问题 • 2 人关注 • 1 个回复 • 6482 次浏览 • 2016-07-05 16:42
elasticsearch.yml 定义的分析器 failed to find analyzer
回复Elasticsearch • zplzpl 回复了问题 • 1 人关注 • 1 个回复 • 6505 次浏览 • 2016-06-27 16:47
一台机器开了两个节点,如何避免分片或者分片副本都在同一台机器上?
Elasticsearch • kennywu76 回复了问题 • 6 人关注 • 3 个回复 • 8417 次浏览 • 2017-05-13 09:13
es删除一个集群的某一节点
Elasticsearch • flowaters 回复了问题 • 2 人关注 • 1 个回复 • 8766 次浏览 • 2016-06-25 19:23
ES发生clear FieldData 线程和query线程死锁,导致节点query不可用
Elasticsearch • PK采纳哦 回复了问题 • 14 人关注 • 9 个回复 • 8191 次浏览 • 2018-04-08 16:03
Lucene5.5入门第十篇完结篇——使用Highlighter使关键词高亮
Lucene • kl 发表了文章 • 0 个评论 • 7364 次浏览 • 2016-06-24 11:27
前言
我们在使用百度和谷歌等搜索引擎的时候,你会发现,搜索引擎会把和我们输入的关键字以红色的字体显示,来突出显示结果的准确性,这就是高亮显示的使用场景
准备
使用Highlighter需要导入相应的jar包,maven项目可以加入如下依赖
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-highlighter</artifactId>
<version>5.5.0</version>
</dependency>
直接看代码
/**
* @author kl by 2016/3/19
* @boke www.kailing.pub
*/
public class FieldSetBoostTest {
//索引目录
String indexDir="E:\\LuceneIndex";
//测试数据
String theme="中国";
String []title={"中国是一个伟大的国家","我爱你的的祖国,美丽的中国","是什么,中国令美日等国虎视眈眈"};
/**
* Lucence5.5返回IndexWriter实例
* @param directory
* @return
*/
public IndexWriter getIndexWriter(Directory directory){
Analyzer analyzer=new CJKAnalyzer();//中日韩二元分词
IndexWriterConfig writerConfig=new IndexWriterConfig(analyzer);
IndexWriter writer=null;
try {
writer =new IndexWriter(directory,writerConfig);
}catch (Exception e){
e.printStackTrace();
}
return writer;
}
public Directory getDirctory(String indexDir){
Directory directory=null;
try {
directory=FSDirectory.open(Paths.get(indexDir));
}catch (IOException e){
e.printStackTrace();
}
return directory;
}
/**
* 创建索引不加权
* @throws Exception
*/
public void Indexer()throws Exception{
IndexWriter writer=getIndexWriter(getDirctory(indexDir));
Document doc=null;
for(String str:title){
doc=new Document();
//Lucence5.5 Fileld有多个实现,StringFIeld不分词 TextField分词
doc.add(new StringField("theme",theme, Field.Store.YES));
Field field=new TextField("title",str, Field.Store.YES);
doc.add(field);
writer.addDocument(doc);
}
writer.close();
}
/**
* 关键命中词高亮输出处理
* @param query
* @param context
* @return
* @throws Exception
*/
public static String getHighlighterString(Query query,String context)throws Exception{
//对促成文档匹配的实际项进行评分
QueryScorer scorer=new QueryScorer(query);
//设置高亮的HTML标签格式
Formatter simpleHTMLFormatter=new SimpleHTMLFormatter("","");
//实例化高亮分析器
Highlighter highlighter=new Highlighter(simpleHTMLFormatter,scorer);
//提供静态方法,支持从数据源中获取TokenStream,进行token处理
TokenStream tokenStream=new CJKAnalyzer().tokenStream("title", new StringReader(context));
return highlighter.getBestFragment(tokenStream, context);
}
@Test
public void searcherTest()throws Exception{
// Indexer();
IndexReader reader= DirectoryReader.open(getDirctory(indexDir));
IndexSearcher is=new IndexSearcher(reader);
System.out.println("总的文档数:"+reader.numDocs());
QueryParser qp=new QueryParser("title",new CJKAnalyzer());
String q="中国";
Query query=qp.parse(q);
TopDocs tDocs=is.search(query,11);
System.out.println("查询-》"+q+"《-总共命中【"+tDocs.totalHits+"】条结果");
for (ScoreDoc scoredoc:tDocs.scoreDocs){
Document doc = is.doc(scoredoc.doc);
String context=doc.get("title");
if(context!=null){
System.out.println(getHighlighterString(query,context));
}
}
}
}
查询效果如下:
原文地址:http://www.kailing.pub/article/index/arcid/82.html 
