SolrQuery实现高亮显示

@Test
    public void testHighLightingQuery() throws SolrServerException, IOException{
         
        // 初始化solrj服务
        HttpSolrServer server = new HttpSolrServer("http://localhost:8080/solr/core2");
        // 设置查询条件
        SolrQuery query = new SolrQuery("title:iphone");
        // 设置前置标签
        query.setHighlightSimplePre("<em>");
        // 设置后置标签
        query.setHighlightSimplePost("</em>");
        // 添加高亮字段
        query.addHighlightField("title");
        // 执行查询
        QueryResponse queryResponse = server.query(query);
         
        // 处理返回结果
        List<Item> items = queryResponse.getBeans(Item.class);
        // 外层的Map,key:id,value:id以外的其他高亮字段,可能有多个,也是一个Map
        // 内层的Map,key:高亮字段的名称,value:字段的内容,集合
        Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
         
        // 遍历map,获取结果
        /*Set<String> ids = highlighting.keySet();
        for (String id : ids) {
            System.out.println("id: " + id);;
            // 获取高亮字段的集合
            Map<String, List<String>> map = highlighting.get(id);
            // 获取高亮字段
            System.out.println(map.get("title").get(0));
            // 因为price不是高亮字段,所以打印出的内容为null
            System.out.println(map.get("price"));
        }*/
        for (Item item : items) {
            System.out.println("id: " + item.getId());
            // 根据item的id获取对应的高亮字段集合:Map,根据字段名称title获取对应的高亮内容集合:List,title只有一条数据,所以获取list集合中的第0条数据
            System.out.println(highlighting.get(item.getId()).get("title").get(0));
            System.out.println("price: " + item.getPrice());
        }
    }
 

评分

猜你喜欢

转载自blog.csdn.net/qq_40208605/article/details/90173120
今日推荐