使用mongodb作为数据源搭建solr搜索引擎之创建同步索引实现

来源:互联网 发布:买完域名之后 编辑:程序博客网 时间:2024/06/10 00:47

以下程序使用solr作为搜索模块,搜索关键的第一步是创建索引。索引的产生我们一般是通过数据库中的数据作为数据源。但是数据库中的数据是时时变化的,数据库的数据变化了怎么同步索引到solr呢。以下程序就是解决这个问题。mongo数据库发生变化后通过使用github上开源的项目mongo-connector作为工具,该项目可以时时检测数据库的改变从而和solr配合实现同步索引的目的。


一:配置solr


使用的solr版本是solr 4.5.1

1)解压zip
2)将d:/solr-4.5.1/example/webapps下的solr.war拷贝到tomcat–>weapps中
3)新建文件夹d:/sorl_home,将d:/solr-4.5.1/example/solr目录拷贝至d:/sorl_home中
4)启动tomcat,此时tomcat会把solr.war进行解压,生成一个solr文件夹;停止tomcat,删除solr.war。

运行tomcat后访问:http://localhost:8080/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中进行查询即可:


1 0
原创粉丝点击