所需的包如图:

代码如下:
package solr;

import java.util.List;
import java.util.Map;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrQuery.ORDER;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Before;
import org.junit.Test;

public class test {
    private static final String URL = "http://localhost:8983/solr/test/";
    private HttpSolrClient server = null;
    
    /*
     * 初始化
     */
    @Before
    public void init() {
        // 创建 server
        server = new HttpSolrClient(URL);
    }
    
    /*
     * 添加、修改索引
     */
    @Test
    public void addDoc() {
 
        SolrInputDocument doc = new SolrInputDocument();
 
        doc.addField("id", "4");
        doc.addField("title", "号外!号外!特别喜讯");
        doc.addField("content", "王部长今天把solr关键应用点全部贯通,希望在以后的学习生涯再接再厉。");
        try {
            //如果不存在,就添加;如果存在,就更改
            UpdateResponse response = server.add(doc);
            //一定要提交
            server.commit();
 
            System.out.println("Query Time :" + response.getQTime());
            System.out.println("Elapsed Time :" + response.getElapsedTime());
            System.out.println("Status :" + response.getStatus());
            
        } catch (Exception e) {
            System.err.print(e);
        }
    }
    
    
    /**
     * 普通查询
     */
    @Test
    public void testQuery() {
        String queryStr = "content:*";
        SolrQuery params = new SolrQuery(queryStr);
        params.setSort("id",ORDER.asc);
        params.set("rows", 10);
        try {
            QueryResponse response = null;
            response = server.query(params);
            SolrDocumentList list = response.getResults();
            System.out.println("总共 : " + list.getNumFound() + "条记录");
            for (SolrDocument doc : list) {
                System.out.println("id : " + doc.get("id") + "  title : " + doc.get("title")+
                        "  content : "+ doc.get("content"));
            }
        } catch (Exception e) {
            System.err.print(e);
        }
    }
    
    /*
     * 高亮查询
     */
    @Test
    public void hightLightQuery() throws Exception{
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setQuery("title:新闻");
        //solrQuery.setFilterQueries("content:[0 TO 100]");
        //solrQuery.setSort("content",ORDER.asc);
        
        // 开启高亮
        solrQuery.setHighlight(true).setHighlightSnippets(1); ;
        // 设置高亮域
        solrQuery.addHighlightField("title");
        // 设置高亮前缀
        solrQuery.setHighlightSimplePre("<font color='red'>");
        // 设置高亮后缀
        solrQuery.setHighlightSimplePost("</font>");
        
       QueryResponse queryResponse = server.query(solrQuery);
       // 从查询响应中获取结果集
       SolrDocumentList solrDocumentList = queryResponse.getResults();
       // 打印结果集中的数据
       for (SolrDocument solrDocument : solrDocumentList) {
           // 获取查询结果
           System.out.println( solrDocument.get("content"));
           // 获取高亮结果
           Map<String, Map<String, List<String>>> map = queryResponse.getHighlighting();
           //获取多层嵌套的结果
           List<String> lists = map.get(solrDocument.get("id")).get("title");
           if(lists != null)
               System.out.println(lists.get(0));
       }
    }
    
    /*
     * 删除
     */
    @Test
    public void deletDoc() throws Exception{
        server.deleteByQuery("id:4");
        //一定要提交
        server.commit();
    }
}

java代码操作solr搜索引擎的增删查改的更多相关文章

  1. java实现简单的数据库的增删查改,并布局交互界面

        一.系统简介 1.1.简介  本系统提供了学生信息管理中常见的基本功能,主要包括管理员.管理员的主要功能有对学生信息进行增加.删除.修改.查找等操作,对信息进行管理,对信息进行修改.查找等操作 ...

  2. 分享知识-快乐自己:java代码 操作 solr

    POM 文件: <!-- solr客户端 --> <dependency> <groupId>org.apache.solr</groupId> < ...

  3. go语言操作mysql范例(增删查改)

    http://blog.csdn.net/jesseyoung/article/details/40398321 go语言连接mysql简介    go官方仅提供了database package,d ...

  4. Moogoose操作之Schema实现增删查改

    Schema不仅定义了文档结构和使用性能,可以为后面的Model和Entity提供公共的属性和方法. Schema.Model.Entity的关系: Schema : 可以定义字段类型,不具备数据库的 ...

  5. SSH2 增删查改实例

    (一)引入包 (共73个,不一定都需要,但是我的项目是这么多,经过调试,没有包冲突) (二)创建数据库表 建立数据库octtest,并创建user表,表里面一共4个字段:id,姓,名,年龄. 语句如下 ...

  6. Java连接MySQL数据库及简单的增删查改操作

    主要摘自 https://www.cnblogs.com/town123/p/8336244.html https://www.runoob.com/java/java-mysql-connect.h ...

  7. SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)

    SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)-DML 1.SQL INSERT INTO 语句(在表中插入) INSERT INTO 语句用于向表中插入新记录. SQL I ...

  8. SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码)

    SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码) 概述: 表由行和列组成,每个表都必须有个表名. SQL CREATE TABLE 语法 CREATE TABLE tabl ...

  9. java中CRUD(增删查改)底层代码的实现

    java中CRUD(增删查改)底层代码的实现: package com.station.dao; import com.station.model.Product; import java.sql.* ...

随机推荐

  1. 【Java基础】Java注解简单入门

    注解简单来说就是配置,是特别的配置,之前常用的配置文件,可以用注解替换.然后通过反射去获取注解的信息. 如何定义一个注解 你在IDE中新建一个注解定义,是这样的结构的: package com.nic ...

  2. ES容易忽视的集群配置

    一 前言 目前生产系统由Solr转ES了,在这边就记录下在使用过程中容易忽视的配置吧,其实我也是才用,如果有什么错误的地方,多指正. 二.配置 1.ES的段合并是限速设置 默认是20MB/s ,如果是 ...

  3. [HBase Manual]CH5 HBase运行模式:单实例和分布式

    HBase运行模式:单实例和分布式 HBase运行模式:单实例和分布式 1.单实例模式 1.1 单实例在HDFS下 2.分布式 2.1 伪分布式 3完全分布式 HBase有2种运行模式,单实例和分布式 ...

  4. [MySQL Code]Innodb 锁分配和锁冲突判断

    根据阿里月报 : MySQL · 引擎特性 · InnoDB 事务锁系统简介 MySQL · 引擎特性 · Innodb 锁子系统浅析   行锁的入口:rec_lock_rec

  5. <%: Html.DisplayNameFor与 <%: Html.DisplayFor的区别

    DisplayNameForModel只有在model定义了DisplayName时有用,简单说,DisplayNameFor是针对model里的"字段"别名,DisplayNam ...

  6. Java API获取consumer group最新提交位移的时间

    碰到了有人问起这个问题,目前java consumer没有利用OffsetAndMetadata中的metadata字段记录提交的时间,故直接通过java consumer来查询是不行,我们需要直接读 ...

  7. 面向对象的类关系及其C++实现

    在面向对象的程序设计中,类之间有6中关系,分别是继承, 组合, 聚合,关联, 依赖,实现,如果使用C语言实现,上面的这些关系通过"结构体包含结构体.结构体包含结构体指针以及函数指针等语法实现 ...

  8. fetch get方法的时候报错

    fetch 报错 Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body. 翻译过来就 ...

  9. Spark连接MongoDB之Scala

    MongoDB Connector for Spark Spark Connector Scala Guide spark-shell --jars "mongo-spark-connect ...

  10. .Net逆向初学习

    前一段时间逆向一个程序时发现是.net的,然后用OD和IDA都调试不了,最后上网查了一下原来.net的逆向要用专门的工具.这里推荐大家一篇文章去了解一下逆向.net的一些工具简介:http://www ...