当前位置:Gxlcms > 数据库问题 > solr5.2.1连接数据库

solr5.2.1连接数据库

时间:2021-07-01 10:21:17 帮助过:3人阅读

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" /> 2 3 <lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" /> 4 <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" /> 5 6 <lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\.jar" /> 7 <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\d.*\.jar" /> 8 9 <lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" /> 10 <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" /> 11 12 <lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" /> 13 <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />

将其修改为:

 1 <lib dir="../../dist/" regex="solr-dataimporthandler-.*\.jar" />
 2 
 3   <lib dir="../../contrib/extraction/lib" regex=".*\.jar" />
 4   <lib dir="../../dist/" regex="solr-cell-\d.*\.jar" />
 5 
 6   <lib dir="../../contrib/clustering/lib/" regex=".*\.jar" />
 7   <lib dir="../../dist/" regex="solr-clustering-\d.*\.jar" />
 8 
 9   <lib dir="../../contrib/langid/lib/" regex=".*\.jar" />
10   <lib dir="../../dist/" regex="solr-langid-\d.*\.jar" />
11 
12   <lib dir="../../contrib/velocity/lib" regex=".*\.jar" />
13   <lib dir="../../dist/" regex="solr-velocity-\d.*\.jar" />

4、将E:\solr-5.2.1\dist目录下的solr-dataimporthandler-5.2.1.jar和solr-dataimporthandler-extras-5.2.1.jar复制到E:\apache-tomcat-7.0.62\webapps\solr\WEB-INF\lib目录下

5、打开E:\apache-tomcat-7.0.62\solr\db\conf\solrconfig.xml,在solrconfig.xml中配置db-data-config.xml的位置,这个文件用于配置连接数据库的信息。

1     <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
2         <lst name="defaults">  
3             <str name="config">E:\apache-tomcat-7.0.62\solr\db\conf\db-data-config.xml</str>  
4         </lst>  
5     </requestHandler>

6、配置db-data-config.xml

 1 <dataConfig>
 2     <dataSource type="JdbcDataSource" name="test_solr_db" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/timesheet" user="root" password="root"/>
 3     <document name="info">
 4         <entity name="item" pk="id"  dataSource="test_solr_db" query="select id,name,birthday,addresstt from user">
 5             <field column="id" name="id" />
 6             <field column="name" name="name" />
 7             <field column="birthday" name="birthday" />
 8             <field column="addresstt" name="addresstt" />
 9         </entity>
10     </document>
11 </dataConfig>

  1)、dataSource用于配置连接数据库的信息及方式,每一个dataSource就是一个数据库

  2)、entity用于配置从哪个表中读取数据,每一个entity就是一张表

  3)、一个配置文件也可以配置多个数据库,在配置entity时,为其dataSource属性设置一个数据库连接即可

  4)、如果存在多表连接,则可以使用entity嵌套的方式解决问题

 1         <entity name="item" query="select * from item"
 2                 deltaQuery="select id from item where last_modified > ‘${dataimporter.last_index_time}‘">
 3             <field column="NAME" name="name" />
 4 
 5             <entity name="feature"  
 6                     query="select DESCRIPTION from FEATURE where ITEM_ID=‘${item.ID}‘"
 7                     deltaQuery="select ITEM_ID from FEATURE where last_modified > ‘${dataimporter.last_index_time}‘"
 8                     parentDeltaQuery="select ID from item where ID=${feature.ITEM_ID}">
 9                 <field name="features" column="DESCRIPTION" />
10             </entity>
11             
12             <entity name="item_category"
13                     query="select CATEGORY_ID from item_category where ITEM_ID=‘${item.ID}‘"
14                     deltaQuery="select ITEM_ID, CATEGORY_ID from item_category where last_modified > ‘${dataimporter.last_index_time}‘"
15                     parentDeltaQuery="select ID from item where ID=${item_category.ITEM_ID}">
16                 <entity name="category"
17                         query="select DESCRIPTION from category where ID = ‘${item_category.CATEGORY_ID}‘"
18                         deltaQuery="select ID from category where last_modified > ‘${dataimporter.last_index_time}‘"
19                         parentDeltaQuery="select ITEM_ID, CATEGORY_ID from item_category where CATEGORY_ID=${category.ID}">
20                     <field column="DESCRIPTION" name="cat" />
21                 </entity>
22             </entity>
23         </entity>

这个链接也是有限制的:
           子Entity的query必须引用父Entity的pk
           子Entity的parentDeltaQuery必须引用自己的pk
           子Entity的parentDeltaQuery必须返回父Entity的pk
           deltaImportQuery引用的必须是自己的pk

7、配置完成db-data-config.xml后,如果我们想把查询出来的这些数据都存储到solr中,就需要在schema.xml中配置了,schema.xml与db-data-config.xml是同一目录

1     <field name="id" type="string" indexed="true" stored="true" required="true"  multiValued="false" />    
2     <field name="name" type="string" indexed="true" stored="true" required="true" multiValued="false" />
3     <field name="birthday" type="date" indexed="true" stored="true" required="true" multiValued="false" />
4     <field name="addresstt" type="string" indexed="true" stored="true" required="true" multiValued="false" />

因为在schema.xml中有solr给出的一些配置例子可能会跟我们自己配置的<field>结点发生冲突,可以将schema.xml文件中默认的<field>、<dynamicField>、<copyField>都注释掉

到此配置结束

8、测试

  1)、浏览器方式:

  终止跑索引                  http://localhost:8080/solr/db/dataimport?command=abort

     开始索引                     http://localhost:8080/solr/db/dataimport?command=full-import

     增量索引                     http://localhost:8080/solr/db/dataimport?command=delta-import

  2)、图形化方式

技术分享

 

solr5.2.1连接数据库

标签:

人气教程排行