zoukankan      html  css  js  c++  java
  • Solr安装和使用

    使用环境:

    腾讯云服务器

    JDK8

    tomcat8.0.45

    一、下载Solr。

    这里使用的版本为4.1.0

    下载地址: https://archive.apache.org/dist/lucene/solr/4.1.0/

    cd   /home/tools/solr

    tar -xf solr-4.1.0.tar

    文件如下:

    cd  /home/tools/solr/solr-4.1.0

    二、默认使用Jetty部署

    cd /home/tools/solr/solr-4.1.0/example

    java -jar start.jar

    访问地址:http://xx.xx.xx.xx:8983/solr

     测试分词

     默认情况下没有安装中文分词,则把所有的单个汉字拆分。

    SolrHome目录: /home/tools/solr/solr-4.1.0/example/solr

    solrcore目录: /home/tools/solr/solr-4.1.0/example/solr/collection1

    三、生产上一般使用tomcat部署solr

    1、使用版本4.10.3 

    https://archive.apache.org/dist/lucene/solr/4.10.3/

    /home/tools

    unzip solr-4.10.3.zip

    cd solr-4.10.3

    2、部署solr.war 到tomcat下

    将/home/tools/solr-4.10.3/dist 的solr-4.10.3.war 文件复制到tomcat的webapp下,改名为solr.war

    cp /home/tools/solr-4.10.3/dist/solr-4.10.3.war  /home/tools/tomcat8.0.45/webapps/

    /home/tools/tomcat8.0.45/webapps/

    mv solr-4.10.3.war  solr.war

    3、启动tomcat, solr.war自动解压

    4、拷贝实ext中的jar到solr的lib下

    cd /home/tools/solr-4.10.3/example/lib
    cp ext/* /home/tools/tomcat8.0.45/webapps/solr/WEB-INF/lib/

    5、创建一个solrhome,solrhome就是solr服务器配置文件存放的目录。

    solr-4.10.3examplesolr文件夹就是一个标准的solrhome 可以直接使用

    cp  -r  /home/tools/solr-4.10.3/example/solr  /home/files/

    cd  /home/files

    mv solr solrhome

    cd solrhome

      1, collection1文件夹就是一个solrcore,一个solrcore就是一个完整的索引库

      2, collection1文件夹下有一个conf文件夹,此文件夹中包含了solrcore的所有配置文件

      3,    solrconfig.xml和schema.xml 两个重要的配置文件 

    solrconfig.xml: 配置了索引库的扩展jar包的位置。

    requedtHandler: 配置了solr对外提供服务的网址

    查询索引使用的网址:

    维护索引时使用的网址 

    defaultQuery: 默认的查询语法

     可以根据实际情况对solrconfig.xml进行配置,如果使用默认可以修改此配置。

    6、告诉Solr服务器solrhome的位置

     vi /home/tools/tomcat8.0.45/webapps/solr/WEB-INF/web.xml

     

    7、启动tomcat

     

    二、Solr的使用

    1、增加依赖

        <dependencies>
            <!-- solr -->
            <dependency>
                <groupId>org.apache.solr</groupId>
                <artifactId>solr-core</artifactId>
                <version>4.1.0</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.solr</groupId>
                <artifactId>solr-solrj</artifactId>
                <version>4.1.0</version>
            </dependency>
    
        </dependencies>
    

      

    2、增加Person类

    package com.example.solrdemo1;
    import org.apache.solr.client.solrj.beans.Field;
    
    public class Person {
    
    
        @Field(value = "id")
        private String id;
    
        @Field(value = "name")
        private String name;
    
        @Field(value = "description")
        private String description;
    
        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 String getDescription() {
            return description;
        }
    
        public void setDescription(String description) {
            this.description = description;
        }
    
    
    }
    

      

    3、增加SolrUtil类

    package com.example.solrdemo1;
    
    import org.apache.solr.client.solrj.SolrQuery;
    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.client.solrj.response.QueryResponse;
    import org.apache.solr.common.SolrDocument;
    import org.apache.solr.common.SolrDocumentList;
    import org.apache.solr.common.SolrInputDocument;
    
    import java.io.IOException;
    import java.util.List;
    
    public class SolrUtil {
    
        //solr服务器所在的地址,collection1为的文档库目录
        private final static String SOLR_URL = "http://118.xx.xx.101:8983/solr/collection1";
    
        /**
         * 获取客户端的连接
         *
         * @return
         */
        public SolrServer createSolrServer() {
            SolrServer solrServer = new HttpSolrServer(SOLR_URL);
            return solrServer;
        }
    
        /**
         * 往索引库添加文档
         *
         * @throws SolrServerException
         * @throws IOException
         */
        public void addDoc() throws Exception {
            SolrInputDocument document = new SolrInputDocument();
            document.addField("id", "doc01");
            document.addField("name", "商品1");
            document.addField("description", "商品描述1");
            SolrServer solrServer = new HttpSolrServer(SOLR_URL);
            ////把文档写入索引库
            solrServer.add(document);
            //提交
            solrServer.commit();
    
        }
    
        /**
         * 根据ID从索引库删除文档
         *
         * @throws SolrServerException
         * @throws IOException
         */
        public void deleteDocumentById() throws SolrServerException, IOException {
            SolrServer solrServer = new HttpSolrServer(SOLR_URL);
    
            solrServer.deleteById("doc01");
            solrServer.commit();
    
        }
    
        /**
         * 根据设定的查询条件进行文档字段的查询
         * @throws Exception
         */
        public void querySolr() throws Exception {
    
            SolrServer solrServer = new HttpSolrServer(SOLR_URL);
            SolrQuery query = new SolrQuery();
    
            //下面设置solr查询参数
    
            //query.set("q", "*:*");// 参数q  查询所有
            query.set("q", "商品");//相关查询,比如某条数据某个字段含有周、星、驰三个字  将会查询出来
    
            //参数fq, 给query增加过滤查询条件
            //query.addFacetQuery("id:[0 TO 9]");
           // query.addFilterQuery("description:商品");
    
            //参数df,给query设置默认搜索域,从哪个字段上查找
            query.set("df", "name");
    
            //参数sort,设置返回结果的排序规则
            //query.setSort("id",SolrQuery.ORDER.desc);
    
            //设置分页参数
            query.setStart(0);
            query.setRows(10);
    
            //设置高亮显示以及结果的样式
            query.setHighlight(true);
            query.addHighlightField("name");
            query.setHighlightSimplePre("<font color='red'>");
            query.setHighlightSimplePost("</font>");
    
            //执行查询
            QueryResponse response = solrServer.query(query);
    
            //获取返回结果
            SolrDocumentList resultList = response.getResults();
    
            for(SolrDocument document: resultList){
                System.out.println("id:"+document.get("id")+"   document:"+document.get("name")+"    description:"+document.get("description"));
            }
    
            //获取实体对象形式
            List<Person> persons = response.getBeans(Person.class);
    
            System.out.println(persons.get(0).getName());
    
        }
    
        public static void main(String[] args) throws Exception {
            SolrUtil solr = new SolrUtil();
            //solr.addDoc();
            //solr.querySolr();
            solr.deleteDocumentById();
        }
    
    
    
    }
    

      

    作者:Work Hard Work Smart
    出处:http://www.cnblogs.com/linlf03/
    欢迎任何形式的转载,未经作者同意,请保留此段声明!

  • 相关阅读:
    类的继承
    垃圾回收GC
    网络层
    数据链路层
    TCP/IP协议分层模型
    OSI参考模型
    浏览器访问一个域名的过程
    Thread&ThreadLocal
    设计模式---单例模式
    内存泄漏和内存溢出
  • 原文地址:https://www.cnblogs.com/linlf03/p/14644763.html
Copyright © 2011-2022 走看看