zoukankan      html  css  js  c++  java
  • solr单机版搭建

    需要把solr服务器安装到linux环境:

    第一步:安装linux、jdk、tomcat。

    [root@bogon ~]# ll

    total 8044

    -rw-r--r--. 1 root root 8234674 Oct 27  2013 apache-tomcat-7.0.47.tar.gz

    [root@bogon ~]# tar -zxf apache-tomcat-7.0.47.tar.gz

    [root@bogon ~]# ll

    total 8048

    drwxr-xr-x. 9 root root    4096 Sep 10 17:55 apache-tomcat-7.0.47

    -rw-r--r--. 1 root root 8234674 Oct 27  2013 apache-tomcat-7.0.47.tar.gz

    [root@bogon ~]# mkdir /usr/local/solr

    [root@bogon ~]# cp apache-tomcat-7.0.47 /usr/local/solr/tomcat

    cp: omitting directory `apache-tomcat-7.0.47'

    [root@bogon ~]# cp apache-tomcat-7.0.47 /usr/local/solr/tomcat -r

    [root@bogon ~]# cd /usr/local/solr/

    [root@bogon solr]# ll

    total 4

    drwxr-xr-x. 9 root root 4096 Sep 10 17:56 tomcat

    [root@bogon solr]#

    第二步:把solr的压缩包上传到服务器。并解压。

    第三步:把/root/solr-4.10.3/dist/solr-4.10.3.war包部署到tomcat下。并改名为solr.war

    [root@bogon dist]# cp solr-4.10.3.war /usr/local/solr/tomcat/webapps/solr.war

    第四步:解压war包。启动tomcat自动解压。关闭tomcat。删除solr.war.

    第五步:把/root/solr-4.10.3/example/lib/ext 目录下所有的jar包复制到solr工程中。

    [root@bogon ext]# cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/

    第六步:创建solrhome。Solrhome是存放solr服务器所有配置文件的目录。

    [root@bogon example]# pwd

    /root/solr-4.10.3/example

    [root@bogon example]# cp -r solr /usr/local/solr/solrhome

    [root@bogon example]#

    第七步:告诉solr服务器solrhome的位置。

    需要修改solr工程的web.xml文件。

    第八步:启动tomcat

     配置业务字段

    1、在solr中默认是中文分析器,需要手工配置。配置一个FieldType,在FieldType中指定中文分析器。

    2、Solr中的字段必须是先定义后使用。

    中文分析器的配置

    第一步:下载IK-Analyzer。把分析器的文件夹上传到服务器

    第二步:需要把分析器的jar包添加到solr工程中

    [root@bogon IK Analyzer 2012FF_hf1]# cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/

    [root@bogon IK Analyzer 2012FF_hf1]#

    第三步:需要把IKAnalyzer需要的扩展词典及停用词词典、配置文件复制到solr工程的classpath。

    /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes 

    [root@bogon IK Analyzer 2012FF_hf1]# cp IKAnalyzer.cfg.xml ext_stopword.dic mydict.dic /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes

    [root@bogon IK Analyzer 2012FF_hf1]# 

    注意:扩展词典及停用词词典的字符集必须是utf-8。不能使用windows记事本编辑。

    第四步:配置fieldType。需要在solrhome/collection1/conf/schema.xml中配置。

     图片:

     

    代码:

    <fieldType name="text_ik" class="solr.TextField">
      <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
    </fieldType>
    

      

    业务字段配置

    业务字段判断标准:

    1、在搜索时是否需要在此字段上进行搜索。例如:商品名称、商品的卖点、商品的描述

    2、后续的业务是否需要用到此字段。例如:商品id。

    需要用到的字段:

    1、商品id

    2、商品title

    3、卖点

    4、价格

    5、商品图片

    6、商品分类名称

    7、商品描述

    Solr中的业务字段:

    1、id——》商品id

    其他的对应字段创建solr的字段。

    <field name="item_title" type="text_ik" indexed="true" stored="true"/>
    <field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
    <field name="item_price"  type="long" indexed="true" stored="true"/>
    <field name="item_image" type="string" indexed="false" stored="true" />
    <field name="item_category_name" type="string" indexed="true" stored="true" />
    <field name="item_desc" type="text_ik" indexed="true" stored="false" />
    
    <field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
    <copyField source="item_title" dest="item_keywords"/>
    <copyField source="item_sell_point" dest="item_keywords"/>
    <copyField source="item_category_name" dest="item_keywords"/>
    <copyField source="item_desc" dest="item_keywords"/>
    

      

    重新启动tomcat

     

       维护索引库

    添加:添加一个json格式的文件就可以。

    修改:在solr中没有update,只需要添加一个新的文档,要求文档id和被修改文档的id一致。原理是先删除后添加。

    删除:使用xml格式。

    删除两种方法:

    1、根据id删除:

    <delete>

    <id>test001</id>

    </delete>

    <commit/>

    2、根据查询删除:

    <delete>

    <query>*:*</query>

    </delete>

    <commit/>

     

    solrJ客户端

     

    需要依赖solrj的jar包。

    <!-- solr客户端 -->
            <dependency>
                <groupId>org.apache.solr</groupId>
                <artifactId>solr-solrj</artifactId>
            </dependency>

    solrj的使用

    public class TestSolr {
    
        /**
         * 测试添加索引库
         * solr中没有修改的方法   添加中修改(solr是如果添加的id相同,会先删除后添加,来实现修改的效果)
         */
        @Test
        public void addDocument() throws SolrServerException, IOException{
            //创建一连接
            SolrServer solrServer=new HttpSolrServer("http://192.168.203.11:8080/solr");
            
            //创建文档对象
            SolrInputDocument document=new SolrInputDocument();
            document.addField("id","test001" );
            document.addField("item_title", "测试商品001");
            document.addField("item_price", 99999);
            document.addField("item_desc","顶级商品就在天空商城");
            //把文档对象添加到索引库
            solrServer.add(document);
            //提交
            solrServer.commit();
        }
        /**
         * 测试索引键的维护                                                                                                                                                                         
         */
        @Test
        public void deletedocument() throws SolrServerException, IOException{
            
    
            SolrServer solrServer=new HttpSolrServer("http://192.168.203.11:8080/solr");
            
            solrServer.deleteById("test001");
            //solrServer.deleteByQuery("*:*");
            solrServer.commit();
        }
        
        
        /**
         * 查询测试
         * <p>Description: </p> 
         * @author shianliang  
         * @date 2018年7月7日  
         * @version 1.0
         * @throws SolrServerException
         */
        @Test
        public void queryDocument() throws SolrServerException{
            //创建查询对象
            SolrServer solrService=new HttpSolrServer("http://192.168.203.11:8080/solr");
            
            //创建查询条件
            SolrQuery solrQuery=new SolrQuery();
            //查询条件
            solrQuery.setQuery( "*:*");
            //分页开始
            solrQuery.setStart(2);
            //页大小
            solrQuery.setRows(5);
            
            //执行查询并返回结果
            QueryResponse  response=solrService.query(solrQuery);
            
            //取返回参数
            SolrDocumentList results = response.getResults();
            
            //总条数
            System.out.println("总条数="+results.getNumFound());
            for (SolrDocument document : results) {
                System.out.println("id="+document.get("id"));
                System.out.println("price="+document.get("item_price"));
                System.out.println("title="+document.get("item_title"));
                System.out.println("image="+document.get("item_image"));
            }
            
        }
        
    }

     

  • 相关阅读:
    JS原生隐士标签扩展
    Asp.Net MVC强类型页面获取值几种方式
    Asp.Net MVC控制器获取视图传值几种方式
    vs2015 创建MVC项目
    C#后台HttpWebRequest模拟跨域Ajax请求,注册Windows服务到服务器上
    EF简介及CRUD简单DEMO
    Impala学习--代码生成(Code Generation)
    Impala源代码分析(2)-SQL解析与执行计划生成
    Impala源代码分析(3)-backend查询执行过程
    Impala源代码分析(1)-Impala架构和RPC
  • 原文地址:https://www.cnblogs.com/shianliang/p/9277858.html
Copyright © 2011-2022 走看看