solr-7.1.0的java介面呼叫
阿新 • • 發佈:2019-02-05
//指定solr伺服器的地址 private final static String SOLR_URL = new String("http://localhost:8983/solr/"); /** * 建立SolrServer物件 * * 該物件有兩個可以使用,都是執行緒安全的 * 1、CommonsHttpSolrServer:啟動web伺服器使用的,通過http請求的 * 2、 EmbeddedSolrServer:內嵌式的,匯入solr的jar包就可以使用了 * 3、solr 4.0之後好像添加了不少東西,其中CommonsHttpSolrServer這個類改名為HttpSolrClient * * @return */ public HttpSolrClient createSolrServer(){ Builder builder = null; builder =new HttpSolrClient.Builder(SOLR_URL); HttpSolrClient solr=builder.build(); return solr; } /** * 往索引庫新增文件 * @throws IOException * @throws SolrServerException */ public void addDoc() throws SolrServerException, IOException{ //構造一篇文件 SolrInputDocument document = new SolrInputDocument(); //往doc中新增欄位,在客戶端這邊新增的欄位必須在服務端中有過定義 document.addField("id", "8"); document.addField("name", "周新星"); document.addField("description", "一個灰常牛逼的軍事家"); //獲得一個solr服務端的請求,去提交 ,選擇具體的某一個solr core Builder builder = null; builder =new HttpSolrClient.Builder(SOLR_URL + "jcg"); HttpSolrClient solr=builder.build(); solr.add(document); solr.commit(); solr.close(); } /** * 根據id從索引庫刪除文件 */ public void deleteDocumentById() throws Exception { //選擇具體的某一個solr core Builder builder = null; builder =new HttpSolrClient.Builder(SOLR_URL + "my_core"); HttpSolrClient server=builder.build(); //刪除文件 server.deleteById("8"); //刪除所有的索引 //solr.deleteByQuery("*:*"); //提交修改 server.commit(); server.close(); } /** * 查詢 * @throws Exception */ public void querySolr() throws Exception{ Builder builder = null; builder =new HttpSolrClient.Builder(SOLR_URL+"my_core/"); HttpSolrClient solrServer=builder.build(); SolrQuery query = new SolrQuery(); //下面設定solr查詢引數 //query.set("q", "*:*");// 引數q 查詢所有 query.set("q","周星馳");//相關查詢,比如某條資料某個欄位含有周、星、馳三個字 將會查詢出來 ,這個作用適用於聯想查詢 //引數fq, 給query增加過濾查詢條件 query.addFilterQuery("id:[0 TO 9]");//id為0-4 //給query增加布爾過濾條件 //query.addFilterQuery("description:演員"); //description欄位中含有“演員”兩字的資料 //引數df,給query設定預設搜尋域 query.set("df", "name"); //引數sort,設定返回結果的排序規則 query.setSort("id",SolrQuery.ORDER.desc); //設定分頁引數 query.setStart(0); query.setRows(10);//每一頁多少值 //引數hl,設定高亮 query.setHighlight(true); //設定高亮的欄位 query.addHighlightField("name"); //設定高亮的樣式 query.setHighlightSimplePre("<font color='red'>"); query.setHighlightSimplePost("</font>"); //獲取查詢結果 QueryResponse response = solrServer.query(query); //兩種結果獲取:得到文件集合或者實體物件 //查詢得到文件的集合 SolrDocumentList solrDocumentList = response.getResults(); System.out.println("通過文件集合獲取查詢的結果"); System.out.println("查詢結果的總數量:" + solrDocumentList.getNumFound()); //遍歷列表 for (SolrDocument doc : solrDocumentList) { System.out.println("id:"+doc.get("id")+" name:"+doc.get("name")+" description:"+doc.get("description")); } //得到實體物件 List<Person> tmpLists = response.getBeans(Person.class); if(tmpLists!=null && tmpLists.size()>0){ System.out.println("通過文件集合獲取查詢的結果"); for(Person per:tmpLists){ System.out.println("id:"+per.getId()+" name:"+per.getName()+" description:"+per.getDescription()); } } } public static void main(String[] args) throws Exception { // solrtest solr = new solrtest(); // solr.createSolrServer(); // solr.addDoc(); // solr.deleteDocumentById(); // solr.querySolr(); }