现在的位置: 首页 -> PHP学习 -> solr从数据库导入数据

solr从数据库导入数据

2015-04-20 00:41评论数 0 ⁄ 被浏览 7654 views+

1. 先在本地的solr_db库下建一张solr_tb表(字段:id,name,price,desc),添加了5条数据,如下图。


建立数据表


2. 还记得上篇中安装solr的目录结构吗?打开D:\phpServer\solr\solr1\home\collection1\conf目录,暂且称这个目录为“配置文件目录”了。打开配置文件目录下的solrconfig.xml文件,在此文件的<config></config>标签之间的任一地方(最好是前面)添加如下代码:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">

  <lst name="defaults">

    <str name="config">data-config.xml</str>

  </lst>

</requestHandler>


配置dataimport


3. 在当前目录下新建一个名为data-config.xml的文件,在文件中添加如下配置信息,此信息为你要连接的mysql库的信息,请如实填写(数据库为solr_db,数据表为solr_tb)。

<?xml version="1.0" encoding="UTF-8" ?>

<dataConfig>

<dataSource type="JdbcDataSource"

driver="com.mysql.jdbc.Driver"

url="jdbc:mysql://127.0.0.1/solr_db"

user="root"

password="root" />

<document>

<entity name="solr_tb" transformer="DateFormatTransformer"

query="select id,name FROM solr_tb where id >= ${dataimporter.request.id}">

</entity>

</document>

</dataConfig>


4. 找到同级目录下面的schema.xml(字段配置)文件,先将此文件备份一下,然后打开schema.xml,全选->删除,再将下面这段粘贴到schema.xml文件中。因为我们暂时用不到那么多参数,所以为了便于初学和理解,简化了一下。

<?xml version="1.0" encoding="UTF-8" ?>

<schema name="example" version="1.5">

  <!-- 要建立的索引,_version_这个不能省略 -->

  <fields>

    <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>

    <field name="name" type="text_general" indexed="true" stored="true" />

    <field name="_version_" type="long" indexed="true" stored="true"/>

  </fields>

  <!-- 字段类型,配置上面字段<field>中出现的类型即可 -->

  <types>

    <fieldType name="string" class="solr.StrField" sortMissingLast="true" />

    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>

    <!-- text_general能对中文分词 -->

    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">

      <analyzer type="index">

        <tokenizer class="solr.StandardTokenizerFactory"/>

        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />

        <filter class="solr.LowerCaseFilterFactory"/>

      </analyzer>

      <analyzer type="query">

        <tokenizer class="solr.StandardTokenizerFactory"/>

        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />

        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>

        <filter class="solr.LowerCaseFilterFactory"/>

      </analyzer>

    </fieldType>

  </types>

  <!-- 唯一字段 -->

  <uniqueKey>id</uniqueKey>

  <!-- 设置默认查询字段,设置此处为name后,还要在solrconfig.xml中设置name="/select"中为<str name="df">name</str>。具体设置方法请参考:https://www.daixiaorui.com/read/141.html -->

  <defaultSearchField>name</defaultSearchField>

  <!-- 查询转换模式,是并且还是或者(and/or) -->

  <solrQueryParser defaultOperator="OR"/>

</schema>


说明一下:“<fields>”标签,就是配置你要建立索引的字段。我现在需要建立id,name两个字段,

即 <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/> 和 <field name="name" type="text_general" indexed="true" stored="true" /> 也就是对应第3步中select id,name FROM solr_tb这里的字段。了解一下fields标签


5.在D:\phpServer\solr\dist目录中复制solr-dataimporthandler-4.7.0.jar、solr-dataimporthandler-extras-4.7.0.jar和mysql-connector-java-5.1.7-bin.jar(这个没有?点击下载)复制到D:\phpServer\solr\solr1\tomcat\webapps\solr\WEB-INF\lib目录中。


6.重启tomcat服务,访问http://localhost:8080/solr/,在左侧的菜单中的下拉选择collection1,然后再载入的菜单中选择Dataimport选项,是不是已经出现了如下图所示的界面呢。如果出现则表示成功了。接着按如下图的指示,现在开始导入数据吧!


solr导入数据


注:Custom Parameters 参数是第3步select语句中的id >= ${dataimporter.request.id},这里填id=1,即从id为1的数据开始导入,这样对于数据较大的表,可以控制分成几步导入。

Clean选项表示是否删除未匹配到的数据,也就是在数据库select结果中没有,而solr索引库中存在的时候,则删除。


8.出现如下图所示的界面则表示导入成功了。


导入数据成功


9.现在点击左侧的Query切换到查询页面,查看一下吧。


结果1


结果2

 

文章出自:https://www.daixiaorui.com/read/145.html 本站所有文章,除注明出处外皆为原创,转载请注明本文地址,版权所有。

目前有 0 条评论  @我要评论

    您的每一个评论都是对我的一份支持

     博客二维码

    昵称 *

    邮箱 *