Solr使用

import static org.junit.Assert.*;

import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.SpellCheckResponse;
import org.apache.solr.client.solrj.response.SpellCheckResponse.Suggestion;
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.Test;

public class SolrTest {
    String baseURL = "http://192.168.30.111:8983/solr/collection1";// http://ip:port/solr/collection1
    HttpSolrServer httpSolrServer = new HttpSolrServer(baseURL);

    /**
     * 查询
     *
     * @throws Exception
     */
    @Test
    public void test1() throws Exception {
        // 注意:如果baseURL后面没有指定solrcore,那么默认查询collection1,如果想查询其他core,则需要在后面增加core的名称

        SolrQuery params = new SolrQuery();
        // params.set("q","*:*");
        params.setQuery("*:*");

        params.setRows(10);
        QueryResponse response = httpSolrServer.query(params);
        SolrDocumentList results = response.getResults();
        long numFound = results.getNumFound();
        System.out.println("found:" + numFound);
        int size = results.size();
        System.out.println("size:" + size);
        int num = 0;
        for (SolrDocument solrDocument : results) {
            Set<String> keySet = solrDocument.keySet();
            num++;
            for (String key : keySet) {
                System.out.println("num----" + num + "----key-->" + key
                        + "---------value-->" + solrDocument.get(key));
            }
            System.err.println("========================");
        }
    }

    /**
     * 建立索引
     *
     * @throws Exception
     */
    @Test
    public void test2() throws Exception {
        SolrInputDocument docs = new SolrInputDocument();
        docs.addField("id", 234);
        docs.addField("name", "soros");
//        docs.addField("last_modified", new Date());
        httpSolrServer.add(docs);
//        httpSolrServer.commit();

    }

    /**
     * 建立索引2
     *
     * @throws Exception
     */
    @Test
    public void test3() throws Exception {
        User user = new User();
        user.setId(111);
        user.setName("cat");
        user.setCity("shenzhen");
        httpSolrServer.addBean(user);
//        httpSolrServer.commit();
        httpSolrServer.commit(true,false,true);
//        httpSolrServer.optimize(waitFlush, waitSearcher, maxSegments)
    }

    /**
     * 删除
     *
     * @throws Exception
     */
    @Test
    public void test4() throws Exception {
        httpSolrServer.deleteById("10");
        httpSolrServer.deleteByQuery("text:Maxtor");
        httpSolrServer.commit();
    }

    @Test
    public void test5() throws Exception {
        SolrQuery params = new SolrQuery();
        params.set("qt", "/spell");
        params.setQuery("name:sausung");
        QueryResponse response = httpSolrServer.query(params);
        long numFound = response.getResults().getNumFound();

        if (numFound == 0) {
            System.out.println("拼写错误");
            SpellCheckResponse spellCheckResponse = response.getSpellCheckResponse();
            List<Suggestion> suggestions = spellCheckResponse.getSuggestions();
            for (Suggestion suggestion : suggestions) {
                int numFound2 = suggestion.getNumFound();
                System.out.println("推荐搜索关键字数:"+numFound2+"~~~~~~~");
                List<String> alternatives = suggestion.getAlternatives();
                for (String value : alternatives) {
                    System.out.println("建议值为"+value+"~~~~~~~~~");
                }

            }

        } else {
            System.out.println("正确查询");
        }
    }
}
import org.apache.solr.client.solrj.beans.Field;

public class User {
    @Field
    private Integer id;
    @Field
    private String name;

    private String city;

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
时间: 2024-10-27 09:09:19

Solr使用的相关文章

solr分布式索引【实战一、分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例】

1 private static Properties prop = new Properties(); 2 3 private static String confFilePath = "conf" + File.separator + "config.properties";// 配置文件目录 4 static { 5 // 加载properties 6 InputStream is = null; 7 InputStreamReader isr = null;

linux集群下 solr集群搭建

首先介绍一下系统架构: * 这个图中代表的是三个solr实例,每个实例包括两个core,组成一个solrcloud * 索引集合包括两个 shard(shard1和shard2),shard1和shard2分别由三个core组成,其中一个L eader两个Replication,Leader是由zookeeper选举产生,zookeeper控制每个shard上三个core的索引数据一致,解决高可用和高并发问题. * Collection在solrcloud集群中是一个索引结构,被划分为一个或多个

solr练习

环境  Linux    tomcat7    solr 上linux解压IK  和 solr 新建文件夹保存 1第一步复制jar  solor>example > ext 下的所有的jar拷贝至tomcat的lib下 2将solr.war拷贝至tomcat的webapps下注意解压   war解压不会保留目录一定要先创建一个文件夹 mkdir   solr. 然后将其解压至该文件夹中解压war使用unzip命令  然后删除其war包  不删除tomcat的运行将其解压会替换 3进入tomca

Elasticsearch VS Solr

最近公司用到了ES搜索引擎,调研发现大公司常用的搜索引擎还有Solr. 鉴于 Lucene 强大的特性和稳定性,有很多种基于 Lucene 封装的企业级搜索平台.其中最流行有两个:Apache Solr 和 Elastic search. Apache Solr:它本身是 Apache Lucene 项目下的开源企业搜索平台,算是 Lucene 的直系.美团.阿里搜索服务是基于 Solr 来搭建的. Elastic Search:简称 ES,由 Elastic 公司开发.Elastic 成立于

Solrcloud(Solr集群)

Solrcloud(Solr集群) Solrcloud介绍: SolrCloud(solr集群)是Solr提供的分布式搜索方案. 当你需要大规模,容错,分布式索引和检索能力时使用SolrCloud. 当索引量很大,搜索请求并发很高时,同样需要使用SolrCloud来满足这些需求. 不过当一个系统的索引数据量少的时候是没有必要使用SolrCloud的. SolrCloud是基于Solr和Zookeeper的分布式搜索方案.它的主要思想是使用Zookeeper作为SolrCloud集群的配置信息中心

Solr

Solr Solr它是一款非常优秀的全文搜索引擎,它是一种开放源码的.基于Lucene的企业级搜索应用服务器.它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果. 官方网址:http://lucene.apache.org/solr/ 官方文档:http://lucene.apache.org/solr/resources.html#documen

solr初认识

Solr : Search On Lucene Replication Solr 基本概况 Apache Solr (读音: SOLer) 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.Apache Solr 中存储的资源是以 Document 为对象进行存储的.每个文档由一系列的 Field 构成,每个 Field 表示资源的一个属性.Solr 中的每个 Document 需要有能唯一标识其自身的属性,默认情况下这个属性的

solr笔记

1.solrclound启动 solr start -c -z server200:2181,server201:2181 2.上传文件 2.1先创建路径后上传文件 zkcli.sh -zkhost server200:2181,server201:2181 -cmd makepath /xxx zkcli.sh -zkhost server200:2181,server201:2181 -cmd putfile zkpath localpath 3.删除文件 zkcli.sh -zkhost 

solr.net的使用

solr.net的使用 引子 最近在做一个日志系统,用普通关系型数据库做数据查询遇到了查询的瓶颈,想到了用成熟的搜索应用服务,我所知道的比较成熟的搜索应用服务有solr和es(elasticsearch),由于时间比较仓促,最后选择了比较熟悉的solr. 简介SOLR Solr是一个高性能,采用Java5开发,Solr基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一

玩转大数据系列之Apache Pig如何与Apache Solr集成(二)

散仙,在上篇文章中介绍了,如何使用Apache Pig与Lucene集成,还不知道的道友们,可以先看下上篇,熟悉下具体的流程. 在与Lucene集成过程中,我们发现最终还要把生成的Lucene索引,拷贝至本地磁盘,才能提供检索服务,这样以来,比较繁琐,而且有以下几个缺点: (一)在生成索引以及最终能提供正常的服务之前,索引经过多次落地操作,这无疑会给磁盘和网络IO,带来巨大影响 (二)Lucene的Field的配置与其UDF函数的代码耦合性过强,而且提供的配置也比较简单,不太容易满足,灵活多变的