以下程序使用solr作为搜索模块,搜索关键的第一步是创建索引。索引的产生我们一般是通过数据库中的数据作为数据源。但是数据库中的数据是时时变化的,数据库的数据变化了怎么同步索引到solr呢。以下程序就是解决这个问题。mongo数据库发生变化后通过使用github上开源的项目mongo-connector作为工具,该项目可以时时检测数据库的改变从而和solr配合实现同步索引的目的。
一:配置solr
5)修改schema.xml配置文件中的id为_id:
二:配置mongodb
1)开启oplog,还需要在Mongo中启动一个replica set
我的MONGO_HOME为 D:\mongodb
目录树如下:
-rs (d)
|----db (d) mongo数据文件文件存放的目录
|----rs1 (d) rs1实例数据文件存放的目录
|----rs2 (d) rs2实例数据文件存放的目录
|----log (d) log文件存放的目录
|----rs1.log (f) rs1实例的log文件
|----rs2.log (f) rs2实例的log文件
|----mongod-rs1.bat rs1实例的启动脚本
|----mongod-rs2.bat rs2实例的启动脚本
mongod-rs1.bat内容如下:
D:\MongoDB\mongod --port 27001 --oplogSize 100 --dbpath db\rs1 --logpath log\rs1.log --replSet rs/127.0.0.1:27002 --journal
pause
mongod-rs2.bat内容如下:
D:\MongoDB\mongod --port 27002 --oplogSize 100 --dbpath db\rs2 --logpath log\rs2.log --replSet rs/127.0.0.1:27001 --journal
pause
2)执行两个脚本,启动两个mongod实例
3)但这时它们还没组成一个replica set,还需要进行配置,开启mongo,连上localhost:27001,也就是实例rs1
配置完成后:
查看rs.initiate(config) rs.status()
三:启动mongo-connector
github地址(https://github.com/10gen-labs/mongo-connector)
D:\项目资料\dht\mongo-connector-master\mongo-connector-master\mongo_connector>py
thon connector.py -m localhost:27001 -t http://localhost:8080/solr/collection1 -
o oplog_progress.txt -n test.foo -u _id -d ./doc_managers/solr_doc_manager.py
python connector.py -m localhost:27001 -t http://localhost:8080/solr/collection1 -o oplog_progress.txt -n torrentinfo-db.torrent_info -u _id -d ./doc_managers/solr_doc_manager.py
注意其中-n参数为要进行索引的数据库表名称
四:测试
在mongo中添加一条记录:
db.foo.insert({title:‘hello world‘})
在mongo-connector中会输出:
2014-07-26 23:18:42,881 - INFO - Finished ‘http://localhost:8080/solr/collection
1/update/?commit=false‘ (post) with body ‘u‘<add><do‘ in 295.228 seconds.
在solr中进行查询即可:
使用mongodb作为数据源搭建solr搜索引擎之创建同步索引实现
原文地址:http://blog.csdn.net/liuchangqing123/article/details/44124251