将数据库表导入到solr索引

  1. 编辑solrcofnig.xml添加处理器
1
2
3
4
5
6
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

  1. 创建一个名为data-config.xml的文件并保存如下内容到conf目录(也就是solrconfig.xml的目录)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/dbname"
user="user-name"
password="password"/>
<document>
<entity name="id"
query="select id,name,desc from mytable">
</entity>
</document>

</dataConfig>

  1. 编辑schema.xml文件,保证文件中有’id’,’name’,’desc’等fields。并更改data-config.xml的详细信息。
  2. 将JDBC的jar驱动文件放到/lib文件夹中(tomcat/webapps/solr/WEB-INF/lib)
  3. solr-4.10.1/dist目录拷贝solr-dataimporthandler开头的jar包到solr/WEB-INF/lib/目录.
1
2
cp solr-dataimporthandler-* /usr/local/tomcat/webapps/solr/WEB-INF/lib/

  1. 运行命令 http://solr-host:port/solr/dataimport?command=full-import进行全量索引,每次进行全量索引时,会将数据清空,如果不想清空需要添加clean=false。例如http://solr-host:port/solr/dataimport?command=full-import&clean=false

####在字段名和field明不同的时候添加索引

  1. 修改data-config.xml,如下所示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/dbname"
user="user-name"
password="password"/>
<document>
<entity name="id"
query="select id,name,desc from mytable">
<field column="id" name="solr_id"/>
<field column="name" name="solr_name"/>
<field column="desc" name="solr_desc"/>
</entity>
</document>
</dataConfig>

  1. 写入solr的字段为’solr_id’, ‘solr_name’, solr_desc’。所以schema.xml中必须要要这几个field。
  2. 运行 http://solr-host:port/dataimpor?command=full-import 建立索引

配置多个表建立索引

  1. 修改data-config如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/dbname"
user="user-name"
password="password"/>
<document>
<entity name="outer"
query="select id,name,desc from mytable">
<field column="id" name="solr_id"/>
<field column="name" name="solr_name"/>
<field column="desc" name="solr_desc"/>
<entity name="inner"
query="select details from another_table where id ='${outer.id}'">
<field column="details" name="solr_details"/>
</entity>
</entity>
</document>
</dataConfig>

  1. schema.xml应该包含solr_details的字段
  2. 运行full-import

mysql配置

  1. 下载mysql的JDBC的jar,并拷贝到/lib的文件夹
  2. 修改data-config为如下
1
2
3
4
5
6
7
8
9
10
11
12
13
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://ip:3306/dbname"
user="username"
password="password"/>
<document name="products">
<entity
......
</entity>
</document>
</dataConfig>


作者

张巍

发布于

2014-11-02

更新于

2014-11-02

许可协议

评论