A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我是楠楠 黑马粉丝团   /  2019-4-18 10:40  /  858 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

【郑州校区】Lucene的高级使用之高亮显示

1.1、高亮显示
原理:
        1)给所有关键字加上一个HTML标签
图片9.png
        2)给这个特殊的标签设置CSS样式
图片10.png
代码实现:
[AppleScript] 纯文本查看 复制代码
// 高亮显示

@Test

public void testHighlighter() throws Exception {

// 目录对象

Directory directory = FSDirectory.open(new File("indexDir"));

// 创建读取工具

IndexReader reader = DirectoryReader.open(directory);

// 创建搜索工具

IndexSearcher searcher = new IndexSearcher(reader);

 

QueryParser parser = new QueryParser("title", new IKAnalyzer());

Query query = parser.parse("谷歌地图");


// 格式化器

Formatter formatter = new SimpleHTMLFormatter("<em>", "</em>");

Scorer scorer = new QueryScorer(query);

// 准备高亮工具

Highlighter highlighter = new Highlighter(formatter, scorer);

// 搜索

TopDocs topDocs = searcher.search(query, 10);

System.out.println("本次搜索共" + topDocs.totalHits + "条数据");


ScoreDoc[] scoreDocs = topDocs.scoreDocs;

for (ScoreDoc scoreDoc : scoreDocs) {

// 获取文档编号

int docID = scoreDoc.doc;

Document doc = reader.document(docID);

System.out.println("id: " + doc.get("id"));


String title = doc.get("title");

// 用高亮工具处理普通的查询结果,参数:分词器,要高亮的字段的名称,高亮字段的原始值

String hTitle = highlighter.getBestFragment(new IKAnalyzer(), "title", title);


System.out.println("title: " + hTitle);

// 获取文档的得分

System.out.println("得分:" + scoreDoc.score);

}

 

}
传智播客·黑马程序员郑州校区地址
河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层
联系电话 0371-56061160/61/62
来校路线  地铁一号线梧桐街站A口出

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马