4.solr学习速成之bean

以bean的形式提交索引,以bean的形式查询出来

package com.liucheng.solr;
import java.io.Serializable;
import org.apache.solr.client.solrj.beans.Field;
public class student implements Serializable{
    private static final long serialVersionUID = 1L;
    @Field
    private String id;
    @Field
    private String name_s;
    @Field
    private int score_i;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName_s() {
        return name_s;
    }
    public void setName_s(String name_s) {
        this.name_s = name_s;
    }
    public int getScore_i() {
        return score_i;
    }
    public void setScore_i(int score_i) {
        this.score_i = score_i;
    }
}

其中field的值必须要在scheme.xml中配置,因为该文件中已经有id和动态field的配置,这里就不用配置

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>
<dynamicField name="*_s"  type="string"  indexed="true"  stored="true" />

测试类:

package com.liucheng.solr;
import java.io.IOException;
import java.util.List;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
public class solrTest {
    public static void addIndex(){
        HttpSolrClient server = solrServer.getServer();
        student stu = new student();
        stu.setId("1005");
        stu.setName_s("wanglc5");
        stu.setScore_i(885);
        try {
            server.addBean(stu);
            server.commit();
        } catch (SolrServerException | IOException e) {
            e.printStackTrace();
        }
    }
    public static void delete(){
        HttpSolrClient server = solrServer.getServer();
        try {
            server.deleteById("1001");
            server.commit();
        } catch (SolrServerException | IOException e) {
            e.printStackTrace();
        }
    }
    public static void search(){
        HttpSolrClient server = solrServer.getServer();
        SolrQuery query = new SolrQuery();
        query.setQuery("*:*");
        query.setStart(0);
        query.setRows(5);
        QueryResponse queryResponse;
        try {
            queryResponse = server.query(query);
            List<student> list = queryResponse.getBeans(student.class);
            System.out.println("num = "+list.size());
            for(int i=0;i<list.size();i++){
                System.out.println(list.get(i).getName_s());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        //addIndex();
        //delete();
        search();
    }
}

solrserver:

package com.liucheng.solr;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
public class solrServer {
    private solrServer(){};
    final static String SOLR_URL = "http://localhost:8080/solr/test";
    private static HttpSolrClient server = null;
    public static HttpSolrClient getServer(){
        if(server == null){
            server = new HttpSolrClient(SOLR_URL);
            server.setDefaultMaxConnectionsPerHost(1000);
            server.setMaxTotalConnections(10000);
            server.setConnectionTimeout(60000);
            server.setSoTimeout(60000);
            server.setFollowRedirects(false);
            server.setAllowCompression(true);
        }
        return server;
    }
}
时间: 2024-08-27 12:29:47

4.solr学习速成之bean的相关文章

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

3.solr学习速成之索引添加 查询 删除

solrserver.java public class solrServer { private solrServer(){}; final static String SOLR_URL = "http://localhost:8080/solr/test"; private static HttpSolrClient server = null; public static HttpSolrClient getServer(){ if(server == null){ server

2.solr学习速成之安装

1.下载解压solr-5.3.1.tgz [[email protected] opt]# tar -zxf solr-5.3.1.tgz -C /opt/module/ 2.将solr-5.3.1/server/solr-webapp下的webapp文件夹拷贝到tomcat下的webapp下,并改名solr [[email protected] solr-webapp]# cp -r webapp/* /opt/module/apache-tomcat-8.5.15/webapps/solr/

13.solr学习速成之IK分词器

IKAnalyzer简介 IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包. IKAnalyzer特性 a. 算法采用"正向迭代最细粒度切分算法",支持细粒度和最大词长两种分词方式,速度最大支持80W字/秒(1600KB/秒). b. 支持多子处理器分析模式:中文.数字.字母,并兼容日文.韩文. c. 较小的内存占用,优化词库占有空间,用户可自定义扩展词库. d. 扩展lucene的扩展实现,采用歧义分析算法优化查询关键字的搜索排列组合,提高lucene检

5.solr学习速成之语法

常用查询参数 q - 查询字符串,必须的. fl - 指定返回那些字段内容,用逗号或空格分隔多个.  start - 返回第一条记录在完整找到结果中的偏移位置,0开始. rows - 指定返回结果最多有多少条记录,配合start来实现分页. sort - 排序,示例:(inStock desc, price asc)表示先 "inStock"降序, 再 "price"升序,默认是相关性降序. wt - (writer type)指定输出格式,可以有 xml, jso

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