日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

solrj的使用,环境准备,工程搭建,索引创建,添加\修改索引,删除索引,查询

發(fā)布時間:2024/9/27 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 solrj的使用,环境准备,工程搭建,索引创建,添加\修改索引,删除索引,查询 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1??????Solrj的使用

1.1?????什么是solrj

Solrj是訪問solr服務(wù)的java程序客戶端。

?

1.2?????需求

使用solrj調(diào)用solr服務(wù)實現(xiàn)對索引庫的增刪改查操作。

1.3?????環(huán)境準(zhǔn)備

l? Solr:4.10.3

l? Jdk環(huán)境:1.7.0_72(solr4.10 不能使用jdk1.7以下

l? Ide環(huán)境:eclipse indigo

1.4?????工程搭建

1.4.1?? 第一步:創(chuàng)建java工程


1.4.2?? 第二步:添加jar

l? Solrj的包


如上圖:

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

solrj-lib是solr的依賴包,若創(chuàng)建的是java工程,需要將solr-solrj-4.10.3.jar和solrj-lib中的包都添加到工程的lib包里面。

l? Solr服務(wù)的其它依賴包


1.5?????代碼實現(xiàn)

1.5.1?? 添加\修改索引

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

@Test

?? public void updateIndex() throws Exception {

????? // 創(chuàng)建HttpSolrServer,可以訪問solr服務(wù)

????? // 參數(shù)就是solr服務(wù)的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");

?

????? // 執(zhí)行添加操作,如果該id存在,則進行修改

????? server.add(doc);

?

????? // 提交

????? server.commit();

?? }

?

1.5.2?? 刪除索引

@Test

?? public void deleteIndex() throws Exception {

????? // 創(chuàng)建HttpSolrServer,可以訪問solr服務(wù)

????? // 參數(shù)就是solr服務(wù)的url

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

?

????? // 根據(jù)id刪除

????? // server.deleteById("8888");

????? // 根據(jù)查詢條件刪除

????? server.deleteByQuery("id:8888");

????? // 全部刪除、慎用!!!!

????? // server.deleteByQuery("*:*");

????? // 提交

????? server.commit();

?? }

?

查詢

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 學(xué)習(xí)案例

?* @author toto

?* @date 2017年3月12日

?* @note begin modify by 修改人 修改時間? 修改內(nèi)容摘要說明

?*/

public class IndexSearch {

???

???????? @Test

???????? public void search() throws Exception {

?????????????????? //創(chuàng)建HttpSolrServer,可以訪問solr服務(wù)

?????????????????? //參數(shù)就是solr服務(wù)的url

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

??????????????????

?????????????????? //創(chuàng)建solrQuery對象

?????????????????? SolrQuery query = new SolrQuery();

?????????????????? //設(shè)置q,查詢條件

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

?????????????????? //設(shè)置fg,過濾查詢條件

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

?????????????????? //設(shè)置sort,排序

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

??????????????????

?????????????????? //設(shè)置start,rows,分頁信息(寫上默認(rèn)值)

?????????????????? query.setStart(0);

?????????????????? query.setRows(10);

??????????????????

?????????????????? //設(shè)置df

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

??????????????????

?????????????????? //設(shè)置高亮

?????????????????? query.setHighlight(true);

?????????????????? query.addHighlightField("product_name");

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

?????????????????? query.setHighlightSimplePost("</font>");

??????????????????

?????????????????? //執(zhí)行搜索,并獲得返回值

?????????????????? QueryResponse response = server.query(query);

??????????????????

???????? ???????? //根據(jù)查詢條件匹配出的結(jié)果對象

?????????????????? SolrDocumentList list = response.getResults();

?????????????????? //匹配出的結(jié)果總數(shù)

?????????????????? long count = list.getNumFound();

??????????????????

?????????????????? System.out.println("匹配出的結(jié)構(gòu)總數(shù):" + 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));

??????????????????????????? }

?????????????????? }

???????? }

}

?

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的solrj的使用,环境准备,工程搭建,索引创建,添加\修改索引,删除索引,查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。