天天看點

solrj的使用,環境準備,工程搭建,索引建立,添加\修改索引,删除索引,查詢1      Solrj的使用

solrj是通路solr服務的java程式用戶端。

solrj的使用,環境準備,工程搭建,索引建立,添加\修改索引,删除索引,查詢1      Solrj的使用

使用solrj調用solr服務實作對索引庫的增删改查操作。

l  solr:4.10.3

l  jdk環境:1.7.0_72(solr4.10 不能使用jdk1.7以下)

l  ide環境:eclipse indigo

solrj的使用,環境準備,工程搭建,索引建立,添加\修改索引,删除索引,查詢1      Solrj的使用

l  solrj的包

solrj的使用,環境準備,工程搭建,索引建立,添加\修改索引,删除索引,查詢1      Solrj的使用

如上圖:

solr-solrj-4.10.3.jar是solr的核心包

solrj-lib是solr的依賴包,若建立的是java工程,需要将solr-solrj-4.10.3.jar和solrj-lib中的包都添加到工程的lib包裡面。

l  solr服務的其它依賴包

solrj的使用,環境準備,工程搭建,索引建立,添加\修改索引,删除索引,查詢1      Solrj的使用

注意:在solr中添加和修改必須含有一個唯一主鍵,如果該主鍵已經存在,則進行修改操作,否則就執行添加操作

@test

   public void updateindex() throws exception {

      // 建立httpsolrserver,可以通路solr服務

      // 參數就是solr服務的url

      httpsolrserver server = new httpsolrserver("http://localhost:8080/solr");

      // solr的文檔對象

      solrinputdocument doc = new solrinputdocument();

      // 圖書資訊

      doc.addfield("id", "8888");

      doc.addfield("product_name", "solr程式設計思想");

      doc.addfield("product_catalog", "99");

      doc.addfield("product_catalog_name", "圖書");

      doc.addfield("product_price", "8888.00");

      // 執行添加操作,如果該id存在,則進行修改

      server.add(doc);

      // 送出

      server.commit();

   }

1.5.2   删除索引

   public void deleteindex() throws exception {

      // 根據id删除

      // server.deletebyid("8888");

      // 根據查詢條件删除

      server.deletebyquery("id:8888");

      // 全部删除、慎用!!!!

      // server.deletebyquery("*:*");

查詢

package cn.com.hbny.solr;

import java.util.list;

import java.util.map;

import org.apache.solr.client.solrj.solrquery;

import org.apache.solr.client.solrj.impl.httpsolrserver;

import org.apache.solr.client.solrj.response.queryresponse;

import org.apache.solr.common.solrdocument;

import org.apache.solr.common.solrdocumentlist;

import org.junit.test;

/**

 * @brief indexmanager.java

 * @attention 學習案例

 * @author toto

 * @date 2017年3月12日

 * @note begin modify by 修改人 修改時間  修改内容摘要說明

 */

public class indexsearch {

         @test

         public void search() throws exception {

                   //建立httpsolrserver,可以通路solr服務

                   //參數就是solr服務的url

                   httpsolrserver server = new httpsolrserver("http://localhost:8080/solr");

                   //建立solrquery對象

                   solrquery query = new solrquery();

                   //設定q,查詢條件

                   query.set("q", "product_name:小黃人");

                   //設定fg,過濾查詢條件

                   query.set("fq", "product_catalog_name:幽默雜貨");

                   //設定sort,排序

                   query.set("sort", "product_price desc");

                   //設定start,rows,分頁資訊(寫上預設值)

                   query.setstart(0);

                   query.setrows(10);

                   //設定df

                   query.set("df", "product_keywords");

                   //設定高亮

                   query.sethighlight(true);

                   query.addhighlightfield("product_name");

                   query.sethighlightsimplepre("<font style=\"color:red\">");

                   query.sethighlightsimplepost("</font>");

                   //執行搜尋,并獲得傳回值

                   queryresponse response = server.query(query);

                  //根據查詢條件比對出的結果對象

                   solrdocumentlist list = response.getresults();

                   //比對出的結果總數

                   long count = list.getnumfound();

                   system.out.println("比對出的結構總數:" + count);

                   //擷取高亮資訊

                   map<string, map<string, list<string>>> highlighting = response.gethighlighting();

                   for (solrdocument solrdocument : list) {

                            system.out.println("商品id:" + solrdocument.get("id"));

                            system.out.println("商品名稱:" + solrdocument.get("product_name"));

                            system.out.println("商品分類:" + solrdocument.get("product_catalog"));

                            system.out.println("商品分類名稱:"

                                               + solrdocument.get("product_catalog_name"));

                            system.out.println("商品價格:" + solrdocument.get("product_price"));

                            // system.out.println("商品描述:"+solrdocument.get("product_description"));

                            system.out.println("商品圖檔位址:" + solrdocument.get("product_picture"));

                            list<string> list2 = highlighting.get(solrdocument.get("id")).get("product_name");

                            if(list2!=null){

                                     system.out.println("高亮後的資訊:"+list2.get(0));

                            }

                   }

         }

}

繼續閱讀