How to provide highlighting with Spring data elasticsearch

@Test
public void shouldReturnHighlightedFieldsForGivenQueryAndFields() { //given
String documentId = randomNumeric(5);
String actualMessage = "some test message";
String highlightedMessage = "some <em>test</em> message"; SampleEntity sampleEntity = SampleEntity.builder().id(documentId)
.message(actualMessage)
.version(System.currentTimeMillis()).build(); IndexQuery indexQuery = getIndexQuery(sampleEntity); elasticsearchTemplate.index(indexQuery);
elasticsearchTemplate.refresh(SampleEntity.class); SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(termQuery("message", "test"))
.withHighlightFields(new HighlightBuilder.Field("message"))
.build(); Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class, new SearchResultMapper() {
@Override
public <T> Page<T> mapResults(SearchResponse response, Class<T> clazz, Pageable pageable) {
List<SampleEntity> chunk = new ArrayList<SampleEntity>();
for (SearchHit searchHit : response.getHits()) {
if (response.getHits().getHits().length <= 0) {
return null;
}
SampleEntity user = new SampleEntity();
user.setId(searchHit.getId());
user.setMessage((String) searchHit.getSource().get("message"));
user.setHighlightedMessage(searchHit.getHighlightFields().get("message").fragments()[0].toString());
chunk.add(user);
}
if (chunk.size() > 0) {
return new PageImpl<T>((List<T>) chunk);
}
return null;
}
}); assertThat(sampleEntities.getContent().get(0).getHighlightedMessage(), is(highlightedMessage));
}

最新文章

  1. MySQL主从同步
  2. MyEclipse 及Tomcate 安装 配置
  3. 百度地图学习(Ⅰ)-Android端地图的显示及简单应用
  4. projecteuler Sum square difference
  5. PyQt4学习笔记1:PyQt4第一个程序
  6. js 中 typeof 的使用
  7. 初学HTML5系列三:事件
  8. JDK1.5中LOCK,Condition的使用
  9. 1660: [Usaco2006 Nov]Bad Hair Day 乱发节
  10. yii2 入口文件 提示syntax error, unexpected T_OBJECT_OPERATOR
  11. mybatis 详解(七)------一对一、一对多、多对多
  12. 设置布局默认为LinearLayout,却成了RelativeLayout
  13. MySQL ERROR 1130 (HY000): Host &#39;192.168.1.8&#39; is not allowed to connect to this MySQL server
  14. Python学习笔记-基础2
  15. CC2431 代码分析②-CC2431狂轰滥炸
  16. 【助教】浅析log4j的使用
  17. Gerrit代码审查工具
  18. R语言数据框小技巧
  19. ubuntu下如何修改时区和时间
  20. 异常处理----使用 try…catch…finally 处理异常

热门文章

  1. Oracle10g中阻塞锁查询更简单
  2. js进阶 12-18 jquery如何实现自定义右键菜单(把问题分细)
  3. 三个Bootstrap免费字体和图标库
  4. Html animation by css(Sequence Js Tutorial)
  5. 28、应用调试之strace命令来跟踪系统调用
  6. mysql select 无order by 默认排序 出现乱序的问题
  7. PL/SQL精明的调用栈分析
  8. hprof教程 分类: B1_JAVA 2015-03-02 12:18 444人阅读 评论(0) 收藏
  9. Win或Linux中编译安装软件的命令解析: configure; make; make install
  10. javascript怎么获取指定url网页中的内容