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&characterEncoding=UTF-8&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字段
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中加入如下配置:
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 t” deltaImportQuery=”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字段
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節點前面增加:
將apache-solr-dataimportscheduler-.jar 中 dataimport.properties 取出并根據實際情況修改,然后放到 solr.home/conf (不是solr.home/core/conf) 目錄下面
具體配置可參考:http://code.google.com/p/solr-dataimport-scheduler/
總結
以上是生活随笔為你收集整理的solr从数据库为solr_home导入数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将solr安装到tomcat里
- 下一篇: mysql计算某一天所在周或月的第一天和