真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在java中使用solr

這篇文章給大家介紹怎么在java中使用solr,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

目前成都創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、海珠網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

SolrJ是操作Solr的Java客戶端,它提供了增加、修改、刪除、查詢Solr索引的JAVA接口。SolrJ針對(duì) Solr提供了Rest 的HTTP接口進(jìn)行了封裝, SolrJ底層是通過(guò)使用httpClient中的方法來(lái)完成Solr的操作。

jar包的引用(maven pom.xml):

 
      org.apache.solr
      solr-solrj
      5.3.1


      junit
      junit
      4.11


      org.slf4j
      slf4j-log4j12
      1.7.7


      commons-logging
      commons-logging
      1.1.3

java代碼:

package entity;

import java.io.IOException;
import java.util.List;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;


public class SolrJTest {
   //指定solr服務(wù)器的地址 
   private final static String SOLR_URL = "http://localhost:8080/solr/"; 

   /**
   * 創(chuàng)建SolrServer對(duì)象
   * 
   * 該對(duì)象有兩個(gè)可以使用,都是線程安全的 
   * 1、CommonsHttpSolrServer:?jiǎn)?dòng)web服務(wù)器使用的,通過(guò)http請(qǐng)求的 
   * 2、 EmbeddedSolrServer:內(nèi)嵌式的,導(dǎo)入solr的jar包就可以使用了 
   * 3、solr 4.0之后好像添加了不少東西,其中CommonsHttpSolrServer這個(gè)類改名為HttpSolrClient
   * 
   * @return
   */
   public HttpSolrClient createSolrServer(){
     HttpSolrClient solr = null;
     solr = new HttpSolrClient(SOLR_URL);
     return solr;
   }


   /**
   * 往索引庫(kù)添加文檔
   * @throws IOException 
   * @throws SolrServerException 
   */
   public void addDoc() throws SolrServerException, IOException{
    //構(gòu)造一篇文檔 
     SolrInputDocument document = new SolrInputDocument(); 
     //往doc中添加字段,在客戶端這邊添加的字段必須在服務(wù)端中有過(guò)定義 
     document.addField("id", "8"); 
     document.addField("name", "周新星"); 
     document.addField("description", "一個(gè)灰常牛逼的軍事家"); 
     //獲得一個(gè)solr服務(wù)端的請(qǐng)求,去提交 ,選擇具體的某一個(gè)solr core
    HttpSolrClient solr = new HttpSolrClient(SOLR_URL + "my_core");
    solr.add(document);
    solr.commit();
    solr.close();
   }


   /** 
   * 根據(jù)id從索引庫(kù)刪除文檔 
   */
   public void deleteDocumentById() throws Exception { 
     //選擇具體的某一個(gè)solr core
     HttpSolrClient server = new HttpSolrClient(SOLR_URL+"my_core"); 
     //刪除文檔 
     server.deleteById("8"); 
     //刪除所有的索引
     //solr.deleteByQuery("*:*");
     //提交修改 
     server.commit(); 
     server.close();
   } 

   /**
   * 查詢
   * @throws Exception 
   */
   public void querySolr() throws Exception{
     HttpSolrClient solrServer = new HttpSolrClient(SOLR_URL+"my_core/"); 
     SolrQuery query = new SolrQuery(); 
     //下面設(shè)置solr查詢參數(shù)
     //query.set("q", "*:*");// 參數(shù)q 查詢所有  
     query.set("q","周星馳");//相關(guān)查詢,比如某條數(shù)據(jù)某個(gè)字段含有周、星、馳三個(gè)字 將會(huì)查詢出來(lái) ,這個(gè)作用適用于聯(lián)想查詢

     //參數(shù)fq, 給query增加過(guò)濾查詢條件 
     query.addFilterQuery("id:[0 TO 9]");//id為0-4 

     //給query增加布爾過(guò)濾條件 
     //query.addFilterQuery("description:演員"); //description字段中含有“演員”兩字的數(shù)據(jù)

     //參數(shù)df,給query設(shè)置默認(rèn)搜索域 
     query.set("df", "name"); 

     //參數(shù)sort,設(shè)置返回結(jié)果的排序規(guī)則 
     query.setSort("id",SolrQuery.ORDER.desc);

     //設(shè)置分頁(yè)參數(shù) 
     query.setStart(0); 
     query.setRows(10);//每一頁(yè)多少值 

     //參數(shù)hl,設(shè)置高亮 
     query.setHighlight(true); 
     //設(shè)置高亮的字段 
     query.addHighlightField("name"); 
     //設(shè)置高亮的樣式 
     query.setHighlightSimplePre(""); 
     query.setHighlightSimplePost(""); 

     //獲取查詢結(jié)果
     QueryResponse response = solrServer.query(query); 
     //兩種結(jié)果獲取:得到文檔集合或者實(shí)體對(duì)象

     //查詢得到文檔的集合 
     SolrDocumentList solrDocumentList = response.getResults(); 
     System.out.println("通過(guò)文檔集合獲取查詢的結(jié)果"); 
     System.out.println("查詢結(jié)果的總數(shù)量:" + solrDocumentList.getNumFound()); 
     //遍歷列表 
     for (SolrDocument doc : solrDocumentList) {
       System.out.println("id:"+doc.get("id")+"  name:"+doc.get("name")+"  description:"+doc.get("description"));
     } 

     //得到實(shí)體對(duì)象
     List tmpLists = response.getBeans(Person.class);
     if(tmpLists!=null && tmpLists.size()>0){
       System.out.println("通過(guò)文檔集合獲取查詢的結(jié)果"); 
       for(Person per:tmpLists){
         System.out.println("id:"+per.getId()+"  name:"+per.getName()+"  description:"+per.getDescription());
       }
     }
   }

   public static void main(String[] args) throws Exception {
     SolrJTest solr = new SolrJTest();
     //solr.createSolrServer();
     solr.addDoc();
     solr.deleteDocumentById();
     solr.querySolr();
  }
}

關(guān)于怎么在java中使用solr就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


新聞名稱:怎么在java中使用solr
文章起源:http://weahome.cn/article/jdhhjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部