最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

solr在java中的使用實例代碼

 更新時間:2017年06月28日 17:07:26   作者:俺就不起網(wǎng)名  
本篇文章主要介紹了solr在java中的使用實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

 <dependency>
      <groupId>org.apache.solr</groupId>
      <artifactId>solr-solrj</artifactId>
      <version>5.3.1</version>
</dependency>
<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
</dependency>
<dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.7</version>
</dependency>
<dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.3</version>
</dependency>

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對象
   * 
   * 該對象有兩個可以使用,都是線程安全的 
   * 1、CommonsHttpSolrServer:啟動web服務(wù)器使用的,通過http請求的 
   * 2、 EmbeddedSolrServer:內(nèi)嵌式的,導(dǎo)入solr的jar包就可以使用了 
   * 3、solr 4.0之后好像添加了不少東西,其中CommonsHttpSolrServer這個類改名為HttpSolrClient
   * 
   * @return
   */
   public HttpSolrClient createSolrServer(){
     HttpSolrClient solr = null;
     solr = new HttpSolrClient(SOLR_URL);
     return solr;
   }


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


   /** 
   * 根據(jù)id從索引庫刪除文檔 
   */
   public void deleteDocumentById() throws Exception { 
     //選擇具體的某一個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ù)某個字段含有周、星、馳三個字 將會查詢出來 ,這個作用適用于聯(lián)想查詢

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

     //給query增加布爾過濾條件 
     //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è)置分頁參數(shù) 
     query.setStart(0); 
     query.setRows(10);//每一頁多少值 

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

     //獲取查詢結(jié)果
     QueryResponse response = solrServer.query(query); 
     //兩種結(jié)果獲?。旱玫轿臋n集合或者實體對象

     //查詢得到文檔的集合 
     SolrDocumentList solrDocumentList = response.getResults(); 
     System.out.println("通過文檔集合獲取查詢的結(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"));
     } 

     //得到實體對象
     List<Person> tmpLists = response.getBeans(Person.class);
     if(tmpLists!=null && tmpLists.size()>0){
       System.out.println("通過文檔集合獲取查詢的結(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();
  }
}

參考文檔:http://www.doc88.com/p-6763747939865.html

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java并發(fā)編程專題(一)----線程基礎(chǔ)知識

    java并發(fā)編程專題(一)----線程基礎(chǔ)知識

    這篇文章主要介紹了java并發(fā)編程線程的基礎(chǔ)知識,文中講解非常詳細(xì),幫助大家更好的學(xué)習(xí)JAVA并發(fā)編程,感興趣想學(xué)習(xí)JAVA的可以了解下
    2020-06-06
  • java實現(xiàn)json字符串格式化處理的工具類

    java實現(xiàn)json字符串格式化處理的工具類

    這篇文章主要為大家詳細(xì)介紹了如何使用java實現(xiàn)json字符串格式化處理的工具類,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • springboot定時任務(wù)備份mysql數(shù)據(jù)庫的實現(xiàn)示例

    springboot定時任務(wù)備份mysql數(shù)據(jù)庫的實現(xiàn)示例

    為了防止數(shù)據(jù)庫被清庫或者誤刪數(shù)據(jù)庫的情況,所以需要定時將mysql數(shù)據(jù)庫中的數(shù)據(jù)進行備份,本文主要介紹了springboot定時任務(wù)備份mysql數(shù)據(jù)庫的實現(xiàn)示例,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • MyBatis在注解上使用動態(tài)SQL方式(@select使用if)

    MyBatis在注解上使用動態(tài)SQL方式(@select使用if)

    這篇文章主要介紹了MyBatis在注解上使用動態(tài)SQL方式(@select使用if),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 用java將GBK工程轉(zhuǎn)為uft8的方法實例

    用java將GBK工程轉(zhuǎn)為uft8的方法實例

    本篇文章主要介紹了用java將GBK工程轉(zhuǎn)為uft8的方法實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 一文詳解如何排查定位Java中的死鎖

    一文詳解如何排查定位Java中的死鎖

    在當(dāng)今數(shù)字化時代,微服務(wù)架構(gòu)憑借其高可擴展性、靈活性和易于維護等優(yōu)勢,成為了眾多企業(yè)構(gòu)建大型應(yīng)用系統(tǒng)的首選架構(gòu)模式,當(dāng)我們將微服務(wù)部署在 Linux 服務(wù)器上時,有時會遭遇令人頭疼的死鎖問題,本位給大家介紹了如何排查定位Java中的死鎖,需要的朋友可以參考下
    2025-02-02
  • spring boot(四)之thymeleaf使用詳解

    spring boot(四)之thymeleaf使用詳解

    Thymeleaf 是一個跟 Velocity、FreeMarker 類似的模板引擎,它可以完全替代 JSP 。接下來通過本文給大家介紹spring boot(四)之thymeleaf使用詳解,需要的朋友可以參考下
    2017-05-05
  • 單臺Spring Cloud Eureka升級到三臺Eureka高可用集群

    單臺Spring Cloud Eureka升級到三臺Eureka高可用集群

    今天小編就為大家分享一篇關(guān)于單臺Spring Cloud Eureka升級到三臺Eureka高可用集群,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 詳解Maven環(huán)境的搭建與idea配置

    詳解Maven環(huán)境的搭建與idea配置

    本篇文章主要介紹了詳解Maven環(huán)境的搭建與idea配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Java超詳細(xì)講解類變量和類方法

    Java超詳細(xì)講解類變量和類方法

    這篇文章主要介紹了JAVA類變量及類方法代碼實例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-05-05

最新評論

屏南县| 额尔古纳市| 福贡县| 永康市| 天镇县| 平陆县| 陆良县| 汝阳县| 额济纳旗| 长春市| 六安市| 虞城县| 九江县| 淮南市| 德安县| 靖州| 盐池县| 茂名市| 桐乡市| 九龙城区| 蒙阴县| 精河县| 尉氏县| 织金县| 乐东| 林西县| 宜州市| 武安市| 泰安市| 新丰县| 乌兰县| 道真| 伊金霍洛旗| 五莲县| 红安县| 饶平县| 嘉黎县| 扶风县| 固原市| 武清区| 麦盖提县|