solr學習之路 擺脫solr頁面客戶端使用代碼實現增刪查改

前面的學習都是關於客戶端的使用,今天我們用代碼來控制solr
這時你就會發現爲啥學那麼久的客戶端的原因了。

增加和更新以及刪除
爲啥增加和更新一起,因爲他們在solr中的操作是一樣的
ok 我們開始寫代碼吧

//鏈接solr客戶端
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
        //創建solr文檔對象
        SolrInputDocument solrInputDocument = new SolrInputDocument();
        //域要先定義後使用
        solrInputDocument.addField("id", "a4521");
        solrInputDocument.addField("product_name", "香蕉");
        solrInputDocument.addField("product_price", "40");
        //修改或者新增(若id一樣則更新不一樣則新增)
        solrServer.add(solrInputDocument);
        //通過id刪除
        solrServer.deleteById("a4521");
        //通過查詢語句刪除
        solrServer.deleteByQuery("*:*");
        //提交
        solrServer.commit();

簡單的增加和刪除就ok了,批量增加和更新的話用循環就ok

查詢纔是重點
接下來我們搞搞查詢

// 連接solr的服務
        SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
        // 獲取solr查詢對象
        SolrQuery solrQuery = new SolrQuery();
        // 設置查詢關鍵字
        solrQuery.setQuery("檯燈");
        // 設置過濾查詢
        solrQuery.addFilterQuery("product_price:[1 TO 100]");
        // 設置排序
        solrQuery.setSort("product_price", ORDER.asc);
        // 從結果中挑選指定範圍的數據
        // 設置起始
        solrQuery.setStart(0);
        // 設置數據數量
        solrQuery.setRows(10);
        // 設置默認搜索域
        solrQuery.set("df", "product_keywords");

        // 開啓高亮
        solrQuery.setHighlight(true);
        // 設置高亮域
        solrQuery.addHighlightField("product_name");
        // 設置高亮前綴
        solrQuery.setHighlightSimplePre("<em>");
        // 設置高亮後綴
        solrQuery.setHighlightSimplePost("</em>");

        // 查詢並獲取查詢響應對象
        QueryResponse queryResponse = solrServer.query(solrQuery);
        // 從查詢響應中獲取結果集
        SolrDocumentList solrDocumentList = queryResponse.getResults();
        // 打印結果集中的數據
        for (SolrDocument solrDocument : solrDocumentList) {
            // 獲取查詢結果
            solrDocument.get("id");
            // 獲取高亮結果
            Map<String, Map<String, List<String>>> map = queryResponse.getHighlighting();
            //獲取多層嵌套的結果
            List<String> lists = map.get(solrDocument.get("id")).get("product_name");
            if(lists != null)
                System.out.println(lists.get(0));
        }

運行結果
這裏寫圖片描述

上面代碼對應頁面客戶端的功能
這裏寫圖片描述

到此solr的學習算入門了

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