solr 学习之solrJ

solrJ是访问Solr服务的JAVA客户端,提供索引和搜索的请求方法,SolrJ通常嵌入在业务系统中,通过solrJ的API接口操作Solr服务。

 <!-- https://mvnrepository.com/artifact/org.apache.solr/solr-solrj -->
    <dependency>
        <groupId>org.apache.solr</groupId>
        <artifactId>solr-solrj</artifactId>
        <version>4.10.4</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>

一、添加数据

public static  void  addDocument() throws Exception{
        //创建Solr的客户端链接对象
        HttpSolrServer solrServer=new HttpSolrServer("http://192.168.6.179:8080/solr/collection1");
        for(int i=3;i<100;i++){
            //创建一个文档对象
            SolrInputDocument sd=new SolrInputDocument();
            //添加域
            sd.addField("id", UUID.randomUUID());
            sd.addField("item_title", "商品"+i);
            sd.addField("item_sell_point", "好看"+i);
            sd.addField("item_price", 100L);
            sd.addField("item_desc", "商品"+i+"这个东西很不错啊");
            sd.addField("item_image", "2"+i+".jpg");
            sd.addField("item_category_name", "分类"+i);
            solrServer.add(sd);
            solrServer.commit();
        }
    }

二、删除

//根据document的Id直接删除
    public static void deleteDocument() throws Exception{
        //创建Solr的客户端链接对象
        HttpSolrServer solrServer=new HttpSolrServer("http://192.168.6.179:8080/solr/collection1");
        solrServer.deleteById("8ceee0a5-52ee-43b6-88ba-249b02c8279c");
        solrServer.commit();
    }
    //根据条件查询删除
    public static void deleteQueryDocument() throws Exception{
        //创建Solr的客户端链接对象
        HttpSolrServer solrServer=new HttpSolrServer("http://192.168.6.179:8080/solr/collection1");
        //查询删除
        solrServer.deleteByQuery("item_title:商品1");
        solrServer.commit();
    }

三、查询

public static void queryDocument() throws Exception{
        //创建Solr的客户端链接对象
        HttpSolrServer solrServer=new HttpSolrServer("http://192.168.6.179:8080/solr/collection1");
        //创建solr的查询对象
        SolrQuery sq=new SolrQuery();
        //设置查询条件
        sq.set("q","item_title:3" );
        //查询
        QueryResponse qr=solrServer.query(sq);
        //获取查询结果
        SolrDocumentList sds=qr.getResults();
        //获取查询的记录数
        long total=sds.getNumFound();
        System.out.println("数量:"+total);
        for(SolrDocument sd:sds){//默认取出10条记录
            String id=(String) sd.getFieldValue("id");
            String item_title=(String) sd.getFieldValue("item_title");
            String item_sell_point=(String) sd.getFieldValue("item_sell_point");
            long item_price=(Long) sd.getFieldValue("item_price");
            String item_desc=(String) sd.getFieldValue("item_desc");
            String item_image=(String) sd.getFieldValue("item_image");
            String item_category_name=(String) sd.getFieldValue("item_category_name");
            System.out.println("========================================");
            System.out.println("id:"+id);
            System.out.println("item_title:"+item_title);
            System.out.println("item_sell_point:"+item_sell_point);
            System.out.println("item_price:"+item_price);
            System.out.println("item_desc:"+item_desc);
            System.out.println("item_image:"+item_image);
            System.out.println("item_category_name:"+item_category_name);
        }
    }

1、多条件查询

//设置查询条件sq.set("q","item_title:3 AND item_desc:东西  OR item_sell_point:好看" );

2、设置过滤条件

//设置过滤条件
 sq.set("fq", "item_price:[1 TO 20]");

3、设置排序

//设置排序 sq.addSort("item_title", ORDER.desc);

4、设置分页

//设置分页 sq.setStart(0);//开始位置
 sq.setRows(3);//每页3条

5、设置高亮

public static void queryDocument() throws Exception{
        //创建Solr的客户端链接对象
        HttpSolrServer solrServer=new HttpSolrServer("http://192.168.6.179:8080/solr/collection1");
        //创建solr的查询对象
        SolrQuery sq=new SolrQuery();
        //设置查询条件
        sq.set("q","item_title:商品" );
        //设置过滤条件
    //    sq.set("fq", "item_price:[1 TO 20]");
        //设置排序
        sq.addSort("item_title", ORDER.desc);
        //设置分页
        sq.setStart(0);//开始位置
        sq.setRows(3);//每页3条

        //开启高亮
        sq.setHighlight(true);
        sq.addHighlightField("item_title");//设置高亮域
        sq.setHighlightSimplePre("<b>");//设置高亮样式
        sq.setHighlightSimplePost("</b>");
        //查询
        QueryResponse qr=solrServer.query(sq);
        //获取查询结果
        SolrDocumentList sds=qr.getResults();
        //获取查询的记录数
        long total=sds.getNumFound();
        System.out.println("数量:"+total);
        for(SolrDocument sd:sds){//默认取出10条记录
            String id=(String) sd.getFieldValue("id");
            String item_title=(String) sd.getFieldValue("item_title");
            String item_sell_point=(String) sd.getFieldValue("item_sell_point");
            long item_price=(Long) sd.getFieldValue("item_price");
            String item_desc=(String) sd.getFieldValue("item_desc");
            String item_image=(String) sd.getFieldValue("item_image");
            String item_category_name=(String) sd.getFieldValue("item_category_name");
            System.out.println("========================================");
            System.out.println("id:"+id);
            System.out.println("item_title:"+item_title);
            System.out.println("item_sell_point:"+item_sell_point);
            System.out.println("item_price:"+item_price);
            System.out.println("item_desc:"+item_desc);
            System.out.println("item_image:"+item_image);
            System.out.println("item_category_name:"+item_category_name);
            //获取高亮显示的结构
            Map<String, Map<String, List<String>>> highlighting=qr.getHighlighting();
            if(highlighting!=null){
                //根据Id获得每个域的高亮内容
                Map<String, List<String>> map=highlighting.get(id);
                //根据具体的域获取高亮内容
                List<String> list=map.get("item_title");
                if(list!=null && !list.isEmpty()){
                    for(String str:list){
                        System.out.println("str:"+str);
                    }
                }
            }
        }
    }
时间: 2024-10-29 19:07:34

solr 学习之solrJ的相关文章

Solr学习记录:Getting started

目录 Solr学习记录:Getting started 1.Solr Tutorial 2. A Quick Overview Solr学习记录:Getting started 本教程使用环境:java8或者更高版本.Solr8.1.centos7 1.Solr Tutorial 1.1简介 本篇将用三个部分具体练习以引领对Solr的快速体验.每个练习将基于前一个练习. 第一个练习:启动solr,创建一个Collection,索引一些基础文档,执行一些搜索. 第二个练习:使用不同数据集,并尝试用

Solr学习总结(五)Solrnet的基本用法及CURD

上一篇已经讲到了Solr 查询的相关的参数.这里在讲讲C#是如何通过客户端请求和接受solr服务器的数据, 这里推荐使用SolrNet,主要是:SolrNet非常使用方便,而且用户众多,社区活跃,一直在更新. SorlNet源码地址:https://github.com/mausch/SolrNet SolrNet使用说明文档:https://github.com/mausch/SolrNet/tree/master/Documentation 一.创建一个项目控制台程序,并引用SolrNet.

Solr学习总结(六)SolrNet的高级用法(复杂查询,分页,高亮,Facet查询)

上一篇,讲到了SolrNet的基本用法及CURD,这个算是SolrNet 的入门知识介绍吧,昨天写完之后,有朋友评论说,这些感觉都被写烂了.没错,这些基本的用法,在网上百度,资料肯定一大堆,有一些写的肯定比我的好,不过,这个是Solr系列文章,会从Solr的基础入门讲到实际开发中的分页,高亮,Facet查询等高级用法.所以,基础的入门也会涉及一些,望大家见谅.我用这么多篇文章,来总结Solr 也是为了将Solr 的 安装,配置,开发等等,整个过程的资料,都能总结汇集到一起,这样不管是懂Solr还

Solr学习之二-Solr基础知识

一 基本说明 简单来说Solr是基于Lucene的高性能的,开源的Java企业搜索服务器.Solr可以看作一个Web app,运行在tomcat或Jetty这类HTTP服务器上, 底层是一个基于Lucene的搜索引擎,还附加一个Solr的基本管理界面.Solr提供HTTP服务,通过Get方法进行查询,通过Post方法进行索引的添加/删除管理. 一般来说Solr的查询时通过Get方法请求到HTTP服务器的solr这个app下的/select对应的servlet上去,而添加等操作时通过POST方法到

solr学习文档之高亮

在<solr学习文档之添加分词词库>一文中,我们学习了如何对一个词组进行分词提取,这一章我们将会使用到分词词库,并介绍如何进行高亮展现 在此之前,我们先了解一下高亮的几个参数 hl:是否开启高亮组件,true为开启,false为不开启 hl.fl:需要开启的高亮字段,多个可用逗号隔开 hl.simple.pre:高亮字段前缀 hl.simple.post:高亮字段后缀 (其他的暂不介绍,想知道的可自行百度) 想要进行高亮站下,需要在schema.xml中将你的字段名(如topicContent

12.solr学习速成之dataimport

solr除了利用solrj建立索引外,还可以由列式数据库hbase触发器添加索引,自动全量或者增量索引关系数据库数据等. dataimport可以配置从任何关系数据库导入索引 1.将jar包拷贝到tomcat/webapps/solr/web-inf/lib下面 mysql-connector-java-5.1.6.jarsolr-dataimporthandler-5.3.1.jarsolr-dataimporthandler-extras-5.3.1.jarsolr-dataimportsc

solr学习(1)

solr是基于Lucene做的全文搜索引擎,目前只是对solr处于使用状态,源码未看.. 简单一点提提最近一段时间学习solr的收获吧. 一.solr的部署安装 这个网上教程挺多的,简要说明流程 1.zookeeper在linux安装部署 使用的是zookeeper-3.3.6,linux环境是centos6.5,建立了三个虚拟机,分别是222,223,224 解压zookeeper包,到usr/local/solrcloud文件下. 在solrcloud目录下建立zk-data文件(今后zk所

Apache Solr 之 使用SolrJ操作索引库

Solrj是Solr搜索服务器的一个比较基础的客户端工具,可以非常方便地与Solr搜索服务器进行交互.最基本的功能就是管理Solr索引,包括添加.更新.删除和查询等.对于一些比较基础的应用,用Solj基本够用,而且你可以非常容易地通过使用Solrj的API实现与Solr搜索服务器进行交互,实现对Solr的基本管理功能.如果你的应用比较复杂,可以扩展Solrj来满足需要. 使用 SolrJ操作索引库: package com.hcm.solr.test; import java.io.IOExce

solr学习-基础环境搭建(一)

目前网上关于solr6.+的安装教程很少,有些6.0之前的教程在应用到6.+的版本中出现很多的问题,所以特别整理出来这一片文章,希望能给各位码农一些帮助! 很少写些文章,如有不对的地方,还希望多多指导. 一.window 环境 solr 6.6.0 下载地址 http://apache.fayea.com/lucene/solr/6.6.0/ jdk 1.8    tomcat 8.0 本机tomcat环境:E:\Java\tomcat\apache-tomcat-8.0.26-windows-