Hibernate Search 之 结果集高亮
使用Hibernate Search方便是方便,可是找出来的结果,都是一个个的实体。而当我想要
使用高亮时,就没那么简单了。一开始走了弯路,按照以前直接用 lucene 的经验,打算自己
找到 QueryHits,然后对 QueryHits的结果进行逐个的高亮。幸好及时搜索了一下,对我帮助
最大的就是 https://forums.hibernate.org/viewtopic.php?f=9&t=982678 这篇文章。
当然,这篇文章也有点复杂了,不知道为啥要对query进行rewrite。在我看来,帮助最大的就是
提醒了我,可以用 query.setProjection(FullTextQuery.THIS,FullTextQuery.DOCUMENT_ID,FullTextQuery.DOCUMENT,FullTextQuery.SCORE,FullTextQuery.BOOST);
来获取到 Document,以及Score。有了这个之后,事情就简单多了
public List<SearchResult> search(String value) throws Exception { Session session = getSession(); FullTextSession fullTextSession = Search.getFullTextSession( session); StandardAnalyzer standardAnalyzer = new StandardAnalyzer( Version.LUCENE_CURRENT); QueryParser parser = new QueryParser( Version.LUCENE_CURRENT, "ALL", standardAnalyzer); Query query = parser.parse( value); FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery( query); fullTextQuery.setProjection(FullTextQuery.THIS, FullTextQuery.DOCUMENT, FullTextQuery.SCORE); Collection<Object[]> queryResult = fullTextQuery.list(); QueryScorer qs = new QueryScorer( query); Formatter formatter = new SimpleHTMLFormatter( "<b><font color=\"red\">", "</font></b>"); Highlighter highlighter = new Highlighter( formatter, qs); List<SearchResult> result = new ArrayList<SearchResult>(); for ( Object[] objs: queryResult ) { Document document = (Document) objs[1]; org.apache.lucene.document.Field field = document.getField("ALL"); String[] highlight = highlighter.getBestFragments( standardAnalyzer, "ALL", field.stringValue(), 5); // 这儿就是处理如何返回结果了 } return result; }
当然,前提是你的这些内容要是Store.YES才行。
相关推荐
fenghuoliuxing0 2020-08-01
yhuihon 2020-05-31
苗疆三刀的随手记 2020-05-27
玫瑰小妖 2020-05-10
心丨悦 2020-05-08
zhanghaibing00 2020-04-21
Lius 2020-02-14
vshacker 2020-01-28
James0 2019-12-15
rootdream 2019-11-17
zycglboy 2019-11-12
Urchindong 2011-08-01
Mexican 2014-03-19
genglang 2018-08-17
89589432 2019-09-22
本文实例为大家分享了vue elementUI表格关键字筛选高亮的具体代码,供大家参考,具体内容如下。<el-input type="search" v-model="search" style="w
Johnjianyo 2019-05-28
技术相关 2019-04-23