• sorl6.0+jetty+mysql


    sorl6.0+jetty+mysql搭建solr服务

    1.下载solr

     

      官网:http://lucene.apache.org/solr/

     

    v2.目录结构如下

     

     

    v3.启动solr(默认使用jetty部署)

     

      在path路径下将 bin文件夹对应的目录加入,然后输入 solr start(或者 solr start -p port,指定端口启动)。在浏览器中访问如下:

     

     

     

      当然,还可以启动其他样例的服务,在example目录下有一个READEME.txt,如果感兴趣请看一下。命令格式如下:

     

    复制代码
    Solr example
    ------------
    
    This directory contains Solr examples. Each example is contained in a 
    separate directory. To run a specific example, do:
    
      bin/solr -e <EXAMPLE> where <EXAMPLE> is one of:
      
        cloud        : SolrCloud example
        dih          : Data Import Handler (rdbms, mail, rss, tika)
        schemaless   : Schema-less example (schema is inferred from data during indexing)
        techproducts : Kitchen sink example providing comprehensive examples of Solr features
    复制代码

     

    v4.Individual SolrCore

     

      在server/solr目录下,有一个README.txt的文件,其中说明了如何建立solr core。最简单的建立是直接复制solr中为我们提供好的例子,打开server/solr/configsets目录会发现里面已经有三个例子,因为我们是要从数据库导入数据,所以复制 “data_driven_schema_configs” 这个例子并改名为 “myCollections”。

     

     

     

    v5.导入需要的jar包

     

      为了导入数据和链接mysql,我们还需要导入两个重要的jar包。由于mysql的jar包并没有在项目中,我是复制了一份放到了dist目录下面了。另外两个需要的jar包就是dist目录下带有“dataimport”标识的jar包。

     

      然后打开myCollections/conf/solrconfig.xml,引用上面提到的jar包,如下。

     

     

    v6.建立数据库

     

     

      建立好之后,随便写入一点儿数据。

     

    v7.添加requestHandler 

     

      继续修改myCollections/conf/solrconfig.xml,搜索 <requestHandler name="/select" class="solr.SearchHandler"> ,然后在该行之上添加如下代码。

     

      <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
          <lst name="defaults">  
             <str name="config">data-config.xml</str>  
          </lst>  
     </requestHandler>  

     

     

    v8.建立连接配置文件

     

      在myCollections/conf目录下新建data-config.xml, 内容如下。

     

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>  
    <dataConfig>  
        <dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/solrdata" user="root" password="123456" batchSize="-1" />  
      <document>  
            <entity name="goods" pk="id"  dataSource="source1"   
                    query="select * from  goods"  
                    deltaImportQuery="select * from goods where id='${dih.delta.id}'"  
                    deltaQuery="select id from goods where updateTime> '${dataimporter.last_index_time}'">  
      
             <field column="id" name="id"/>  
             <field column="name" name="name"/>  
               <field column="number" name="number"/>  
               <field column="updateTime" name="updateTime"/>  
         </entity>  
      </document>  
    </dataConfig>  
    复制代码

     

     说明:

     

      dataSource是数据库数据源。Entity就是一张表对应的实体,pk是主键,query是查询语句。Field对应一个字段,column是数据库里的column名,后面的name属性对应着Solr的Filed的名字。其中solrdata是数据库名,goods是表名。

     

      其中deltaQuery是增量索引,原理是从数据库中根据deltaQuery指定的SQL语句查询出所有需要增量导入的数据的ID号。然后根据deltaImportQuery指定的SQL语句返回所有这些ID的数据,即为这次增量导入所要处理的数据。核心思想是:通过内置变量“${dih.delta.id}”和 “${dataimporter.last_index_time}”来记录本次要索引的id和最近一次索引的时间。

     

    v9.managed-schema配置field信息

     

      搜索 <field name= ,添加关联数据库表Column的信息。

     

     

      注意:默认的 filed 不要删除哦!

     

    v10.添加我们刚刚建立的core

     

      (1).点击Core Admin,配置我们建立的solr Core的信息,如下所示。

     

     

      (2).点击 Add Core,如下所示。

     

     

      (3).测试索引是否成功

     

                                       

     

    索引成功

     

      (4).监测查询成功

     

     

    查询成功

     

    v11.通过代码调用solr服务

     

      简单建立一个java项目,依赖上dist目录下的solr-solrj-6.0.0.jar。

     

      测试代码如下。

     

     View Code

     

      对应的实体类。

     

     View Code

     

      每测试一次,可以在浏览器中通过query方式查看测试结果是否正确。

     

    v12.参考资料

     

      Solr之搭建Solr6.0服务并从Mysql上导入数据

     

       Solr参考指南  可以下载

  • 相关阅读:
    可持久化线段树学习笔记
    P1084 疫情控制
    Educational Codeforces Round 71 (Rated for Div. 2)
    Codeforces Round #587 (Div. 3)
    luogu P1886滑动窗口
    Codeforces Round #574 (Div. 2)
    luogu P1880 [NOI1995]石子合并
    [JZOJ3521]道路覆盖--状压DP
    [NOIP2018模拟赛10.19]只会暴力报告
    [NOIP2018模拟赛10.18]自闭报告
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/5649038.html
Copyright © 2020-2023  润新知