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

1      Solrj的使用

1.1     什么是solrj

Solrj是访问solr服务的java程序客户端。

 

1.2     需求

使用solrj调用solr服务实现对索引库的增删改查操作。

1.3     环境准备

l  Solr:4.10.3

l  Jdk环境:1.7.0_72(solr4.10 不能使用jdk1.7以下

l  Ide环境:eclipse indigo

1.4     工程搭建

1.4.1   第一步:创建java工程


1.4.2   第二步:添加jar

l  Solrj的包


如上图:

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

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

l  Solr服务的其它依赖包


1.5     代码实现

1.5.1   添加\修改索引

注意:在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   删除索引

@Test

   public void deleteIndex() throws Exception {

      // 创建HttpSolrServer,可以访问solr服务

      // 参数就是solr服务的url

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

 

      // 根据id删除

      // server.deleteById("8888");

      // 根据查询条件删除

      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 学习案例

 * @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));

                            }

                   }

         }

}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Solr基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎 课程特点毕业后接触的第一个中间件就是Solr,在工作中用处广泛,为了便于大家快速掌握该技能,开始录制相关课程,该专栏特点如下:1.采用Solr最新版本视频录制,全网最新课程(Solr8.1于2019年5月16日发布)2.技能点全网最全,会结合工作经验,项目中用到的技能点都会有所涉及,更新章节比较全面3.适用范围广,从零基础到高级架构以及分布式集群都涵盖,适用初级、高级、项目实战等多个层次开发者4.多种维度辅助学习,采用独立solr粉丝群辅助教学,学员问题会及时得到解决,程序员突破圈 打卡制度,督促学员学习关注后再购买、 关注后再购买、 关注后再购买课程能得到什么1.快速学习到最新版本的全文检索技术,从视频、文章、圈子、粉丝交流等快速促进学习2.通过该技术,获得面试进阶指导3.结交人脉(庞大的粉丝群)..End初期学员100人,价格不会太高,也是为了帮助更多的开发者但是个人精力有限,所以限制条件如下1.求知欲强,有想向技术更深一层了解的2.乐于交流,喜欢探讨技术者3.学习惰性者慎入,购买后会督促大家学习,购买不是目的,学习到该技能才是该专栏的主要目的正式进入学习状态了吗,专栏群见。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涂作权的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值