使用solrj 对solr进行增删改查操作

2018-06-05|来源:

使用java调用solr有两种方式
1、使用httpClient对象直接语句solr对外提供的rest接口,接收到的数据再进行解析。
2、使用solr提供的java客户端api,推荐这种方式


创建索引

第一种添加方式,通过添加Field创建索引文档
使用addField添加索引域,然后通过add(document)添加索引文档
package com._656464.solr.test;
import java.io.IOException;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Before;
import org.junit.Test;
/**
 * 使用solrj 来调用solr 的服务
 */
public class SolrTest {
    SolrServer solr = null;
    @Before
    public void init(){
        String urlString = "http://localhost:8983/solr";
        solr = new HttpSolrServer(urlString);
    }
    @Test
    public void addIndex() throws SolrServerException, IOException{
        SolrInputDocument document=new SolrInputDocument();
        //第一种添加方式,通过添加Field创建索引文档
        document.addField("id", "1");
        document.addField("name", "领悟书生");
        solr.add(document);
        solr.commit();
    }
}


第二种添加方式,通过添加bean创建索引文档
创建一个实体,实体的属性使用 Field注解
package com._656464.solr.test;
import org.apache.solr.client.solrj.beans.Field;
public class TestObj {
    @Field(value = "id")
    private int id;
    @Field(value = "name")
    private String name;
    @Field(value = "content")
    private String content;
    @Field(value = "price")
    private double price;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
}


对bean初始化并赋值后,使用solr的addBean方法把该对象添加到索引中
//第二种添加方式,通过添加bean创建索引文档
TestObj obj=new TestObj();
obj.setId(2);
obj.setName("领悟书生");
obj.setContent("书生在学solr");
obj.setPrice(1024);
solr.addBean(obj);
solr.commit();


第三种添加方式,通过添加bean列表创建索引文档
//第三种添加方式,通过添加bean列表创建多个索引文档
List<TestObj> list=new ArrayList<TestObj>();
TestObj obj=null;
for(int i=1;i<=25;i++){
    obj=new TestObj();
    obj.setId(i);
    obj.setName("领悟书生"+i);
    obj.setContent("书生在学solr"+i);
    obj.setPrice(1024);
    list.add(obj);
}
solr.addBeans(list);
solr.commit();



删除索引
删除比较简单,直接调用SolrServer 的deleteById即可
@Test
public void delete() throws SolrServerException, IOException {
    String urlString = "http://localhost:8983/solr";
    SolrServer solr = new HttpSolrServer(urlString);
    solr.deleteById("1");
    solr.commit();
}



更新索引

更新索引和创建索引一样,只要ID一样,则覆盖



查询文档
使用SolrQuery 构造查询参数,然后通过solr的query方法返回QueryResponse 查询返回对象,然后获取queryResponse的结果集,最后遍历结果集即可
@Test
public void testFind() throws SolrServerException {
    // 以后参数都是通过这个对象去构造...
    SolrQuery solrParams = new SolrQuery();
    solrParams.setQuery("name:书生");
    QueryResponse queryResponse = solr.query(solrParams);
    // 返回结果,默认只返回10条记录
    SolrDocumentList documentList = queryResponse.getResults();
    for (SolrDocument solrDocument : documentList) {
        Object id = solrDocument.get("id");
        Object name = solrDocument.get("name");
        System.out.println(id);
        System.out.println(name);
    }
}



相关问答

更多

请问如何对用Java对mysql进行增删改查等方法?

package com.ly520.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util ...

请问如何对用Java对mysql进行增删改查等方法?

package com.ly520.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util ...

为什么solr6.0以后的版本,无法引入org.apache.solr.client.solrj.impl.HttpSolrClient类

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

JAVA用springMVC+hibernate做的需要连接数据库的简单的增删改查的小程序

这个非常简单,Spring官方提供很多示例,简单的宠物商店等,你可以到spring官网,下载spring roo这个工具 ,安装后它的smaple目录有很多示例,你把示例脚本执行一次,就自动生成spring mvc的示例程序,如果你不想使用示例,你可以使用spring roo工具根据提示,自动创建spring mvc的增删改查小程序。 非常简单哦,只需要根据spring roo的向导提示进行就可以快速的创建spring mvc程序。

nodejs操作mongodb的增删改查功能实例

本文实例讲述了nodejs操作mongodb的增删改查功能。分享给大家供大家参考,具体如下: 安装相关模块 如果使用这个的话,你需要先自己安装一下他需要的模块,在根目录输入 npm install mongodb --save 进行模块安装,安装成功以后就可以进行以下的步骤。 文件的引入 以下是我书写的相关代码,放到你可以引用的相关目录,本人放到了express的根目录 function Mongo(options) { this.settings = { url: 'mongodb://loca ...

solr教程

相关文章

更多

最近更新

更多