欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

solr从数据库为solr_home导入数据

发布时间:2025/3/20 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 solr从数据库为solr_home导入数据 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

针对5.3以后的导入数据

1. 在solr_home里添加core容器

该solr_home是安装solr到tomcat时配置的,参见:将solr安装到tomcat里
在该solr_home里新一个文件夹,可命名为:ims_advertiser_core。ims_advertiser_core就是core容器,当然名字可以是你自定义的其它名字。

2. 向core容器里添加conf

将solr-5.3.0\example\example-DIH\solr\solr里的conf复制到solr_home/ ims_advertiser_core里

3. 生成core.propertises配置文件


通过http://localhost:8080/solr打开solr管理界面,填写完后点 Add Core。solr就会在solr_home/ims_advertiser_core里生成core.propertise文件

name:core.properties里的name;
instanceDir:core容器名;
dataDir:确认Add Core时,在core容器里生成的新文件夹的名字(好像是存索引的,还不清楚)
config:指定conf文件夹下的solrconfig.xml文件
schema: 指定conf文件夹下的schema.xml文件

4.配置solr_home\ims_advertiser_core\conf下的solrconfig.xml

在solrconfig.xml中加入如下配置:

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

5. 配置xx-data-config.xml文件(存在则不需要)

该文件与solrconfig.xml在同一目录下,一般名为solr-data-config.xml。配置如下:

<dataConfig><!--mysql数据库配置,oracle的在后面的网页资料里有讲到 --><dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.2.195:3306/agx?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true" user="agxadmin" password="agxadmin" /> <document><!-- 配置javabean与主键,以及完全索引查询语句--><entity name="advertiser" pk="advertiserId" query="select u.id,u.userName,u.disabled,a.advertiserId,a.deputy,a.companyName,a.shortName,a.companyPhone,a.companyAddress,a.webSite,a.advertiserType,a.contactName,a.contactDuty,a.contactEmail,a.contactPhone,a.contactWechat,a.contactQQ from agx_advertiser a,agx_user u where a.userId=u.id"><!-- 字段配置--><field column="id" name="id" /><field column="userName" name="userName" /><field column="disabled" name="disabled" /> <field column="advertiserId" name="advertiserId" /> <field column="deputy" name="deputy" /><field column="companyName" name="companyName" /><field column="shortName" name="shortName" /><field column="companyPhone" name="companyPhone" /><field column="companyAddress" name="companyAddress" /><field column="webSite" name="webSite" /> <field column="advertiserType" name="advertiserType" /><field column="contactName" name="contactName" /><field column="contactDuty" name="contactDuty" /><field column="contactEmail" name="contactEmail" /><field column="contactPhone" name="contactPhone" /><field column="contactWechat" name="contactWechat" /><field column="contactQQ" name="contactQQ" /></entity></document> </dataConfig>

6. 进入solr界面,执行导入数据

7.配置schema.xml控制查询内容

第6步执行后,去query里查全部时,并没有查到数据,只有id(且该id还不是我们需要的)。这是因为还未配置D:\solr_home\ims_advertiser_core\conf里的schema.xml文件
1):添加字段:这儿只显示advertiser这个javabean里的advertiserId和shortName字段

<field name="advertiserId" type="int" indexed="true" stored="true" multiValued="false" /> <field name="shortName" type="string" indexed="false" stored="true" multiValued="false" />

2):建议建立一个拷贝字段,将所有的 全文本 字段复制到一个字段中,以便进行统一的检索。

<copyField source="advertiserId" dest="text" maxChars="25000" /><copyField source="shortName" dest="text" maxChars="500" />

3):更改

<uniqueKey>advertiserId</uniqueKey>

schema.xml的配置讲解参见:schema.xml详解

导入数据网页资料:有war包

一. 数据导入(DataImportHandler-DIH)
DIH 是solr 提供的一种针对数据库、xml/HTTP、富文本对象导入到solr 索引库的工具包。这里只针对数据库做介绍。
A、准备以下jar包
apache-solr-dataimporthandler-4.0.0.jar
apache-solr-dataimporthandler-extras-4.0.0.jar
apache-solr-dataimportscheduler-1.1.jar(增量导入使用)
数据库对应的jdbc驱动包这里使用的是Oracle oracle10g.ja放入Tomcat6.0.36/webapps/sol/WEB-INF/lib 中

B、配置solr_home下的solrconfig.xml
在solrconfig.xml中加入如下配置:

<requestHandlername=”/dataimportclass=”org.apache.solr.handler.dataimport.DataImportHandler”> <lst name=”defaults”> <str name=”config”>xx-data-config.xml</str> </lst> </requestHandler>

C、配置数据源
在与solrconfig.xml文件同级的目录中建立上述配置中的xx-data-config.xml文件,配置如下

query属性为全导入的时候使用。其他为增量导入使用。

<?xml version=”1.0″ encoding=”UTF-8″ ?> <dataConfig> <dataSource type=”JdbcDataSource” driver=”oracle.jdbc.driver.OracleDriver” url=”jdbc:oracle:thin:@192.168.0.129:1521:orcl” user=”username” password=”password”/> <document> <entity name=”business_info” pk=”ID” query=”select t.ID id,business_name,bussiness_type from business tdeltaImportQuery=”select t.ID id,business_name,bussiness_type from business t where id=’${dataimporter.delta.ID}’” deltaQuery=”select t.ID id,business_name,bussiness_type from business t where to_char(updatetime,’yyyy-mm-dd hh24:mi:ss’)> ‘${dataimporter.last_index_time}’”> <field column=”ID” name=”id”/> </entity> </document> </dataConfig>

至此所有DIH的配置完成,在浏览器中输入命令:
全导入:
http://localhost:8085/solr/core0/dataimport?command=full-import&commit=ture
增量导入:
http://localhost:8085/solr/core0/dataimport?command=delta-import&clean=false&commit=ture
查看导入状态
http://localhost:8085/solr/core0/dataimport?command=status
D、处理CLOB字段

<entity name=”meta” query=”select id,filename,content,bytes from documentstransformer=”ClobTransformer”> <field column=”ID” name=”id” /> <field column=”CONTENT” name=”CONTENT” clob=”true” /> </entity>

ClOB 字段的 column 必须大写!!
E、DIH内存溢出错误
在使用DIH时,容易报内存溢出错误。可以通过设置jvm大小来解决。设置方法如下:
在tomcat\bin\startup.bat 加入SET JAVA_OPTS=-Xms128m -Xmx1024m 配置 这里设置的是1024M,根据情况可以适量增大
F、自动全导入和自动增量导入
此功能可以自己写程序实现,也可利用apache-solr-dataimportscheduler-1.0.jar包完成此功能。配置如下:
修改solr.war中WEB-INF/web.xml, 在servlet节点前面增加:

<listener> <listener-class> org.apache.solr.handler.dataimport.scheduler.ApplicationListener </listener-class> </listener>

将apache-solr-dataimportscheduler-.jar 中 dataimport.properties 取出并根据实际情况修改,然后放到 solr.home/conf (不是solr.home/core/conf) 目录下面
具体配置可参考:http://code.google.com/p/solr-dataimport-scheduler/

总结

以上是生活随笔为你收集整理的solr从数据库为solr_home导入数据的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。