(七) solr数据导入:通过JDBC从数据库导入数据

这节展示如何通过JDBC从mysql数据库中将数据导入进solr中

假设数据库(blog)中有如下两个表:article,category

article:

id,title,catid

category:

id,catname

接着需要做一下几个配置:

 

在 schema.xml的域信息定义如下:

 <field name="id"     type="string"   indexed="true"  stored="true"  required="true"/>
 <field name="title" type="text" indexed="true" stored="true"/>
 <field name="catname" type="string" stored="true"/>

solrconfig.xml

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

 

db-data-config.xml 的配置如下:

<dataConfig>
    <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/blog" user="root" password="admin"/>
    <document>
        <entity name="article" query="select id,title,catid from article">
            <field column="id" name="id" />
            <field column="title" name="title" />
            <field column="title" name="suggest"/>
            <entity name="category" query="select catname from category where id=${article.catid}">
                <field column="catname" name="catname"/>
            </entity>
        </entity>
    </document>
</dataConfig>

配置完成之后,重启solr服务,然后执行以下命令进行数据导入

http://localhost:8983/solr/import?command=full-import

/import: 这个命令用于显示当前的状态

/import?command=full-import :使用该参数,表示进行完全导入,默认情况下,在开始导入的时候,会将上次导入的数据进先进行删除,然后再导入,通过另外一个参数,可以改变这种默认行为,clean=false

/dataimport?command=delta-import:使用该参数,表示进行增量导入

/dataimport?command=reload-config: 该命令表示强制对配置进行重新加载

/dataimport?command=abort :该命令表示停止当前正在进行的索引

下面就一些参数稍作解释:

 <field column="title" name="title" />  此处是将从mysql数据库中获取的字段名“title” 映射到schema.xml中的title域中(其实此处),其余字段以此类推

posted @ 2012-10-29 12:11  涛光  阅读(2514)  评论(0编辑  收藏  举报