sphinx结合mongodb、xml做全文搜索

本文详细介绍了如何利用sphinx与mongodb结合实现高效全文检索,包括安装步骤、数据源配置、索引生成与合并等关键环节,并讨论了在实际应用中遇到的挑战与解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我们需要,安装sphinx mongodb
如何安装mongodb可以参考:http://blog.sina.com.cn/s/blog_abba9c1d0101cmd1.html

                        http://blog.sina.com.cn/s/blog_abba9c1d0101cvsb.html

其中的一些路径定义在config/config.js里

clone :gitclone git@github.com:marujun/mongoLog.git
clone 之后需要:npm  install


  如果只是使用命令来搜索的话,参考coreseek.js ,这是我用nodejs调用进程写的代码,这种方式我搜索的时候使用的是search命令,但是官网上说这种方法不可取,search命令只是为测试用的,所以还是尽可能的使用官方给出的api。

    因为sphinx官方没有给出nodejs的驱动也不能直接操作mongodb所以我只能通过xml这个中间量来操作。首先我把数据存在mongodb里,然后我每次有新的数据存入mongodb的时候就生成一个delta.xml文件,然后生成delta索引,然后把delta合并到main索引上面。如何生成索引及如何配置数据源?
    我通过xml来做数据源,但是还必须有nodejs对nphinx的驱动,首先这个驱动官方是没有的,只能用第三方的,这个我找了很久也没找到好用的,现在在用的是sphinxapi,然后还有一个limestone
找的一些文章说sphinxapi对中文的支持不好,搜索中文的时候不返回数据,然后limestone的功能比较少而且现在也不更新了。真希望官方可以给出nodejs的驱动并支持连接mongodb.不过现在找不到好的驱动只能先使用少的可怜的第三方的驱动了。
     那么如何来标示呢,我是每个xml文档的document里都有一个id,
     其中field标示检索内容的范围,attr为搜索到匹配内容时列出来的属性
然后通过sphinx检索出来的结果的格式:

    其中docs为有这个词的文档数,hits标示该词一共出现了多少词,通过其中查找到的id我们可以到数据库中去找该条文档具体的信息。words为检索词中拆分出来的单词,这是匹配模式可以自己设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值