天天看点

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

                            }

                   }

         }

}

继续阅读