5 Lucene笔记(五):搜索结果高亮
来源:互联网 发布:爱淘宝推广链接 编辑:程序博客网 时间:2024/06/05 00:21
packagech.lucene.app;
importjava.util.ArrayList;
importjava.util.List;
importorg.apache.lucene.document.Document;
importorg.apache.lucene.index.IndexWriter;
importorg.apache.lucene.queryParser.QueryParser;
importorg.apache.lucene.search.IndexSearcher;
importorg.apache.lucene.search.Query;
importorg.apache.lucene.search.ScoreDoc;
importorg.apache.lucene.search.TopDocs;
importorg.apache.lucene.search.highlight.Formatter;
importorg.apache.lucene.search.highlight.Highlighter;
importorg.apache.lucene.search.highlight.QueryScorer;
importorg.apache.lucene.search.highlight.Scorer;
importorg.apache.lucene.search.highlight.SimpleHTMLFormatter;
importorg.junit.Test;
importch.lucene.entity.Article;
importch.lucene.utils.LuceneUtils;
publicclassFourApp {
@Test
public void createIndexDB()throwsException {
Articleart= newArticle(1,"标题","搜索标题的内容是什么呢?Lucene学习学习哈哈哈");
Documentdoc= LuceneUtils.javaBeanToDocument(art);
IndexWriterindexWriter=newIndexWriter(LuceneUtils.getDirectory(), LuceneUtils.getAnalyzer(), LuceneUtils.getMaxFieldLength() );
indexWriter.addDocument( doc);
indexWriter.close();
}
@Test
public void searchByKeyword ()throwsException{
String keyword = "标题";
List<Article>list= newArrayList<Article>();
IndexSearcherindexSearcher= newIndexSearcher(LuceneUtils.getDirectory());
QueryParserqueryParser= newQueryParser(LuceneUtils.getVersion(),"content", LuceneUtils.getAnalyzer());
Query query = queryParser.parse( keyword);
TopDocs topDocs = indexSearcher.search( query, 100);
//格式对象
Formatterformatter= newSimpleHTMLFormatter("<font color='red'>","</font>" );
//关键字对象
Scorerscorer= newQueryScorer(query);
//高亮对象
Highlighterhighlighter= newHighlighter(formatter,scorer);
for( int i=0; i< topDocs. scoreDocs. length; i++){
ScoreDocscoreDoc= topDocs.scoreDocs[i];
int no = scoreDoc. doc;
Documentdoc= indexSearcher.doc(no);
//关键字高亮
StringtitleHighlighter= highlighter.getBestFragment(LuceneUtils.getAnalyzer(),"title",doc.get("title"));
StringcontentHighlighter= highlighter.getBestFragment(LuceneUtils.getAnalyzer(),"content",doc.get("content"));
//System.out.println(contentHighlighter+"....");
//将高亮后结果封装回document对象中
doc.getField("title").setValue(titleHighlighter);
doc.getField("content").setValue(contentHighlighter);
Articlearticle= (Article) LuceneUtils.documentToJavaBean(doc, Article.class);
list.add( article);
}
for(Article a : list){
System.out.println(a);
}
}
}
0 0
- 5 Lucene笔记(五):搜索结果高亮
- Lucene —— 搜索结果高亮显示
- lucene学习笔记(五)lucene高级搜索
- Lucene实战(二)索引业务bean以及搜索结果高亮
- java鬼混笔记:lucene 9、查询结果高亮
- Lucene查询结果高亮
- Lucene查询结果高亮
- Lucene 高亮 分词 搜索
- Lucene SandBox包中highlighter(高亮显示搜索结果包)存在的问题
- 发一个Lucene 2.4.0对搜索结果高亮显示的代码
- 一个Lucene 2.4.0对搜索结果高亮显示的代码
- 搜索学习入门--使用LuceneHighlighter高亮显示Lucene检索结果的关键词
- lucene搜索结果分页
- lucene搜索结果排序
- 搜索结果高亮显示
- vim搜索结果高亮
- 搜索结果高亮显示
- Elasticsearch(五)elasticsearch高亮搜索
- TI zstack 建网和入网过程简介
- Android Intent-filter意图过滤器
- MapReduce二次排序
- HDU 5923 Prediction 并查集 合并
- Android 自定义的一个带有标题栏的相对布局
- 5 Lucene笔记(五):搜索结果高亮
- java设计模式之观察者模式(observer)
- 魅族自动化测试架构之路
- IT企业面经
- 6 Lucene笔记(六):检索结果排序问题
- oracle的varchar2()与varchar()的关系
- SLAM的前世今生 终于有人说清楚了 | 硬创公开课
- 教你自定义ListView实现下拉刷新,上拉加载更多
- ES6里symbol