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());
        }
    }

SolrQuery實現高亮顯示
SolrQuery實現高亮顯示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章