6.Solr4.10.3API使用(CURD)

转载请出自出处:http://www.cnblogs.com/hd3013779515/

1.在工程中引入solr-solrj-4.10.3.jar

<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>4.10.3</version>
</dependency>

2.Solr的增删改查

(1) schema.xml配置修改

<field name="stu_name" type="text_ik" indexed="true" stored="true" multiValued="false" /> 

<field name="stu_sex" type="int" indexed="true" stored="true" multiValued="false" /> 

<field name="stu_address" type="text_ik" indexed="true" stored="true" multiValued="false" />

(2)Student.java

package cn.ljh.ssm.test;

import org.apache.solr.client.solrj.beans.Field;

public class Student{
    @Field("id")
    private String id;
    @Field("stu_name")
    private String name;
    @Field("stu_sex")
    private int sex;
    @Field("stu_address")
    private String address;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getSex() {
        return sex;
    }
    public void setSex(int sex) {
        this.sex = sex;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", sex=" + sex
                + ", address=" + address + "]";
    }
}

(3) HttpSolrServerSingleton.java

package cn.ljh.ssm.test;

import org.apache.solr.client.solrj.impl.HttpSolrServer;

public class HttpSolrServerSingleton {
     //solr server URL指的时solr发布到web工程后的访问路径
     private final static String SolrURL = "http://192.168.137.168:8080/solr";
     //使用懒汉式单例中的静态内部类方式
     private static class HttpSolrServerSingletonContainer{
         private static HttpSolrServer instance = new HttpSolrServer(
                 HttpSolrServerSingleton.SolrURL);
     }
     //solrServer是线程安全的,所以在使用时需要使用单例的模式,减少资源的消耗
     public static HttpSolrServer getInstance(){
            return HttpSolrServerSingletonContainer.instance;
     }

}

(4) SolrHelloWorldTest.java

package cn.ljh.ssm.test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
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.apache.solr.common.SolrInputDocument;
import org.junit.Test;

public class SolrHelloWorldTest {

    @Test
    public void testAdd(){
        try {
            HttpSolrServer server = HttpSolrServerSingleton.getInstance();

            //先删除所有数据
            server.deleteByQuery("*:*");

            SolrInputDocument doc = new SolrInputDocument();
            doc.addField("id",String.valueOf(1));
            doc.addField("name","apple phone");
            doc.addField("price","6000");
            server.add(doc);
            SolrInputDocument doc2 = new SolrInputDocument();
            doc2.addField("id",String.valueOf(2));
            doc2.addField("name","huawei phone");
            doc2.addField("price","1000");
            server.add(doc2);
            SolrInputDocument doc3 = new SolrInputDocument();
            doc3.addField("id",String.valueOf(3));
            doc3.addField("name","mi phone");
            doc3.addField("price","2000");
            server.add(doc3);

            SolrInputDocument doc5 = new SolrInputDocument();
            doc5.addField("id",String.valueOf(15));
            doc5.addField("name","mi phone02");
            doc5.addField("price","2000");
            server.add(doc5);

            Random random = new Random();

            for (int i = 0; i < 10; i++) {
                SolrInputDocument doc4 = new SolrInputDocument();
                doc4.addField("id",i+4);
                doc4.addField("name","phone"+i);
                doc4.addField("price",random.nextInt(2000));
                server.add(doc4);

            }

            server.commit();//提交,将所有更新提交到索引中
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 使用POJO添加document
     */
    @Test
    public void testAddStudent(){
        try {
            HttpSolrServer server = HttpSolrServerSingleton.getInstance();
            List<Student> studentList = new ArrayList<Student>();
            Student stu1 = new Student();
            stu1.setId("103");
            stu1.setName("张小强");
            stu1.setSex(1);
            stu1.setAddress("北京市海淀区知春路");
            studentList.add(stu1);

            stu1 = new Student();
            stu1.setId("104");
            stu1.setName("刘小米");
            stu1.setSex(0);
            stu1.setAddress("北京市海淀区北苑路");
            studentList.add(stu1);

            server.addBeans(studentList);
            server.commit();
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testQueryStudent(){
        try {
            HttpSolrServer server = HttpSolrServerSingleton.getInstance();

            String strQuery = "stu_name:小米";//q表示查询的内容
            SolrQuery query = new SolrQuery(strQuery);

            QueryResponse resp = server.query(query);

            SolrDocumentList sdList = resp.getResults();
            long totalResults = sdList.getNumFound();//命中的总记录数

            System.out.println("totalResults-->"+totalResults);
            for(SolrDocument sd:sdList){
                Student student = server.getBinder().getBean(Student.class, sd);
                System.out.println(student);
            }
        } catch (SolrServerException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testQuery(){
        try {
            HttpSolrServer server = HttpSolrServerSingleton.getInstance();

            String strQuery = "name:apple";//q表示查询的内容
            SolrQuery query = new SolrQuery();
            query.set("q",strQuery);

            QueryResponse resp = server.query(query);

            SolrDocumentList sdList = resp.getResults();
            long totalResults = sdList.getNumFound();//命中的总记录数

            System.out.println("totalResults-->"+totalResults);
            for(SolrDocument sd:sdList){
                System.out.print("id:" + sd.getFieldValue("id") +
                        " " + "name:" + sd.getFieldValue("name") +
                        " " + "price:" + sd.getFieldValue("price"));
            }
        } catch (SolrServerException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testDelete(){
         try {
             HttpSolrServer server = HttpSolrServerSingleton.getInstance();

             server.deleteById("1");
             server.deleteByQuery("id:2 id:3");

             server.commit();
         } catch (Exception e) {
             e.printStackTrace();
         }
    }
}
时间: 2024-11-07 22:02:55

6.Solr4.10.3API使用(CURD)的相关文章

9.Solr4.10.3数据导入(post.jar方式和curl方式)

转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.使用post.jar方式 java -Durl=http://192.168.137.168:8080/solr/mycore/update -Ddata=files -jar /usr/local/solr-4.10.3/example/exampledocs/post.jar /usr/local/solr-4.10.3/example/multicore/exampledocs/ipod_othe

配置solr4.10.0和中文分词IKAnalyzer

全文索引服务solr搭建.公司最近要用到.我又是个java小白.做环境的什么的不再行.就此几下操作. 大部分是看官方提供的reference.pdf来做的,也google了不少.公司还有个大哥指点....笨的可以. 环境如下 OS: centos6.5 java环境: jdk1.7.0_51 tomcat版本: apache-tomcat-7.0.55 solr版本: solr-4.10.0 中文分词插件: IKAnalyzer2012FF_u1 另需准备mysql-connector-java

10.Solr4.10.3数据导入(DIH全量增量同步Mysql数据)

转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.创建MySQL数据 create database solr; use solr; DROP TABLE IF EXISTS student; CREATE TABLE student ( id char(10) NOT NULL, stu_name varchar(50) DEFAULT NULL, stu_sex int(1) DEFAULT NULL, stu_address varchar(20

Solr4.10与tomcat整合并安装中文分词器

1.solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展,并对索引.搜索性能进行了优化. Solr可以从Solr官方网站(http://lucene.apache.org/solr/ )下载,解压后目录如下: bin:solr的运行脚本 contrib:solr的一些贡献软件/插件,用于增强solr的功能. dist:该目录包含build过程中产生的war和jar文

Tomcat部署Solr4.10.4

前段时间学习solr,兴致勃勃的从官网下载到solr5.3.0最新版本,然后在后期部署时出现了很多问题.首先,4.0到5.0是个大版本更新,下载 的压缩包的文件结构有了很多变化,导致网上很多关于solr低版本的教程没有了指导意义(当然,无障碍阅读原版文档的大神无视之).这个还好说,最扯淡的 是5.0的变化导致中文分词器的支持上出了问题,我使用的是IK Analyzer,在5.0上部署各种问题,没脾气,退一步海阔天空,我乖乖的下载到solr4.0的最后一个版本:solr4.10.4.至于新版本部

solrCloud 单机多节点部署(zookeeper3.4.6+solr4.10.4+tomcat7.0.61)

本套方案是在linux单主机上部署多个solr节点,最终达到solrCloud的效果.先展示下solrCloud单机部署的效果: 在solrCloud上已经创建了两个collection. 接下来就说说这个部署过程: 首先创建一个solrcloud目录,用于存放solrCloud所有相关的软件和配置. 1.下载安装zookeeper 按理来说需要多节点部署zookeeper,由于这个工作比较简单,需要的可以从网络上的其他地方搜索部署.本次使用单节点zookeeper,测试使用环境足以.当下载解压

zookeeperr3.4.5+tomcat7+solr-4.10.1分布式集群搭建

一.   说明 本次分布式部署solr是在两台服务器(10.21.16.31和10.21.16.34)上部署5个结点,10.21.16.31服务器部署3个结点,10.21.16.34服务器部署2个结点 二.   下载需要的工具包 zookeeper-3.4.5.tar.gz,tomcat-7.0.50.tar.gz,solr-4.10.1.tgz(jdk必须是7,可以使用系统自带的openJDK) 三.   添加用户 分别在两台服务器上添加solr用户 useradd  solr passwd

使用最新 solr4.10 快速开发团购网站等垂直搜索网站

说明: solr 是一个非常完善的开源项目,非常优秀,他不紧紧是做个索引这么简单,而是可以做成一个垂直的网站,比如团购网站,快速搭建页面. 而且solr带了一个非常优秀的管理后台.可以查看管理,导入数据,重建索引,同步主从数据,非常强大. 这里主要展示的是solr 可以快速搭建一个团购网站,并且将代码做成demo放到github上面供大家学习参考. 代码修改的比较仓促还在不断完善. 1,环境搭建,使用solr4.10 版本 从apache 官方网站下载最新的 solr 4.10.0 http:/

Win7下Solr4.10.1和MySql的整合(索引与搜索)

1.打开D:\webserver\solr\collection1\conf\solrconfig.xml文件,在<requestHandler name="/select" class="solr.SearchHandler">行上面加入以下内容: <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImpo