日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

solr mysql 增量索引_solr中实现MySQL数据全量索引和增量索引

發布時間:2023/12/14 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 solr mysql 增量索引_solr中实现MySQL数据全量索引和增量索引 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

緊接上篇ansj分詞整合后,開始需要做索引。索引分增量和全量,可以直接連接數據庫去做,也可以通過程序去做,以下實現連接數據庫去做,相對來說比較簡單。

1.修改multicore/new_core/conf/solrconfig.xml文件(上篇提到過的),在里面新增

data-config.xml

delta-data-config.xml

其中第一段是專門做全量索引的,第二段做增量索引(主要是靠DataImportHandler類實現)

2.新增multicore/new_core/conf/data-config.xml文件

url="jdbc:mysql://192.168.0.81:3306/new_mall?zeroDateTimeBehavior=convertToNull&characterEncoding=utf8&useUnicode=true"

user="root" password="HyS_Db@2014"/>

query="select * from mall_goods limit ${dataimporter.request.length} offset ${dataimporter.request.offset}"

transformer="RegexTransformer">

dataSource不用說了,數據源配置來的

entity文檔中的實體配置(注意pk="id" 不能隨便改 ,需要和schema.xml中的id匹配,否則會報“?org.apache.solr.common.SolrException: Document is missing mandatory uniqueKey field: id”)

query 查詢語句(可分頁)

transformer 暫時不清楚干啥

field定義列名

3.新增multicore/new_core/conf/delta-data-config.xml文件

url="jdbc:mysql://192.168.0.81:3306/new_mall?zeroDateTimeBehavior=convertToNull&characterEncoding=utf8&useUnicode=true"

user="root" password="HyS_Db@2014"/>

query="select * from mall_goods"

deltaImportQuery="select * from mall_goods where goods_id='${dih.delta.id}'"

deltaQuery="select goods_id as id from mall_goods where update_date > '${dih.last_index_time}'"

transformer="RegexTransformer">

deltaQuery查詢出有更改過的id

deltaImportQuery根據id查詢

4.修改multicore/new_core/conf/schema.xml文件,定義field索引配置

注意上面選擇一下text_ansj

5.solr的war包可能還缺少部分jar包,需要把mysql的jar,以及solr項目中dist目錄下的jar包都放到solr的web站點中

6.開始運行

全量:http://solr.xxxx.com:8082/new_core/dataimport?command=full-import&commit=true&clean=false&offset=0&length=100000(其中0到100000的數據建立索引)

增量:http://solr.ehaoyao.com:8082/new_core/deltaimport?command=delta-import&entity=MallGoods

entity:是document下面的標簽(data-config.xml)。使用這個參數可以有選擇的執行一個或多個entity ? 。使用多個entity參數可以使得多個entity同時運行。如果不選擇此參數那么所有的都會被運行。

clean:選擇是否要在索引開始構建之前刪除之前的索引,默認為true

commit:選擇是否在索引完成之后提交。默認為true

optimize:是否在索引完成之后對索引進行優化。默認為true

debug:是否以調試模式運行,適用于交互式開發(interactive development mode)之中。

請注意,如果以調試模式運行,那么默認不會自動提交,請加參數“commit=true”

注意:在做增量索引的時候

很容易出現deltaQuery has no column to resolve to declared primary key pk='id'這種異常

主要是因為ID" must be used as it is in 'deltaQuery' select statement as "select ID from ..."

(if you different name for ID column in database, then use 'as' keyword in select statement. In my case I had 'studentID' as primary key in student table. So I used it as "select studentID as ID from ..."

--> The same applies to 'deletedPkQuery'

At present its working fine for me. Any updation in database is reflected in Solr as well.

所以,delta-data-config.xml文件需要注意一下pk的值

參考連接:

http://shiyanjun.cn/archives/444.html

http://blog.duteba.com/technology/article/70.htm

http://www.devnote.cn/article/89.html

http://qiaqia26.iteye.com/blog/1004996

http://zzstudy.offcn.com/archives/8104

http://blog.csdn.net/duck_genuine/article/details/5426897

------------------------------------------------------------------------------------------------------------------------------

最后補充:

有時候需要刪除索引數據,可以這樣刪除

http://xxxx/new_core/update/?stream.body=*:*&stream.contentType=text/xml;charset=utf-8&commit=true

new_core 表示你要刪除哪個核下面的索引

總結

以上是生活随笔為你收集整理的solr mysql 增量索引_solr中实现MySQL数据全量索引和增量索引的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。