分布式搜索Elasticsearch——搜索(二)
2013-05-10 00:04
453 查看
前面提到如何进行搜索,并将SearchRequestBuilder的一些方法进行了列举,本文调用了SearchRequestBuilder的用于高亮的方法,处理了检索中的高亮问题:
addHighlightedField(String fieldName)指明要进行高亮处理的Field;setHighlighterPreTags设定了高亮文字的前缀;setHighlighterPostTags设定了高亮文字的后缀。
取得hit后,使用hit.highlightFields()取得结果中进行了高亮标识的域名-域值对,然后对这些域名-域值对进行分析得到高亮的域结果。
SearchResponse response1 = client.prepareSearch("user") .setTypes("tb_person0", "tb_person1", "tb_person2", "tb_person3", "tb_person4") .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) .setQuery(QueryBuilders.fieldQuery("name", "张三")) // Query .addHighlightedField("name") .setHighlighterPreTags("<span style=\"color:red\">") .setHighlighterPostTags("</span>") .setFilter(FilterBuilders.rangeFilter("age").from(20).to(22)) // Filter .setFrom(0).setSize(60).setExplain(true) .execute() .actionGet(); SearchHits hits1 = response1.getHits(); for(SearchHit hit : hits1){ String json = hit.getSourceAsString(); Person newPerson = mapper.readValue(json, Person.class); Map<String, HighlightField> result = hit.highlightFields(); HighlightField titleField = result.get("name"); Text[] titleTexts = titleField.fragments(); String name = ""; for(Text text : titleTexts){ name += text; } newPerson.setName(name); System.out.println("name\t\t" + newPerson.getName()); System.out.println("sex\t\t" + newPerson.getSex()); System.out.println("age\t\t" + newPerson.getAge()); System.out.println("isStudent\t\t" + newPerson.getIsStudent()); System.out.println("--------------------------"); }
addHighlightedField(String fieldName)指明要进行高亮处理的Field;setHighlighterPreTags设定了高亮文字的前缀;setHighlighterPostTags设定了高亮文字的后缀。
取得hit后,使用hit.highlightFields()取得结果中进行了高亮标识的域名-域值对,然后对这些域名-域值对进行分析得到高亮的域结果。
相关文章推荐
- 分布式搜索Elasticsearch——配置
- 分布式搜索Elasticsearch——概述
- 分布式搜索Elasticsearch——安装
- 分布式搜索Elasticsearch——创建客户端(四)
- 分布式搜索Elasticsearch——项目过程(一)
- 分布式搜索Elasticsearch——配置
- .NET 分布式 搜索 elasticsearch.net NEST
- 分布式搜索Elasticsearch——配置
- (转)开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)入门学习资源索引
- (转)分布式搜索Elasticsearch——配置
- 分布式搜索Elasticsearch——集成paoding
- 分布式搜索Elasticsearch——创建客户端(五)
- .NET 分布式 搜索 elasticsearch.net NEST
- 开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)入门学习资源索引
- 分布式搜索Elasticsearch——创建客户端(六)
- 分布式搜索Elasticsearch——搜索(一)
- 分布式搜索Elasticsearch——项目过程(二)
- 分布式搜索Elasticsearch——MultiSearch
- 分布式搜索Elasticsearch——节点实例化
- 分布式搜索Elasticsearch——项目过程(一)