如题,分享一下这个 gem https://github.com/pat/ts-sidekiq-delta, 使用 ts-sidekiq-delta 轻松搞定 thinking-sphinx 3.x 的 delta。
不错。 另外一个方案是 Sphinx RT。实时更新,不用 delta。
#1 楼 @tylerlong o ..我用的是 think-sphinx,这个 gem 文档没有看到相关说明,如果不用 delta 就能实现,那太好了。我刚看了下 Sphinx RT , http://sphinxsearch.com/docs/archives/1.10/rt-overview.html 难道就修改下配置文件就可以了?sphinx 小白路过,求解惑。那 这种做法性能如何,会不会造成索引的时候,搜索服务中断下
#2 楼 @small_fish__ 肯定可以实现。但是怎么和 think-sphix 搭配就不知道了。我用的时候是直接用 sphinxQL 和 sphinx 通信的。Sphinx RT 就好比一个数据库中的表,你可以直接通过程序插入数据,插入的数据立刻就可以被搜索到。确实就不用 delta 了。说真的,不了解 think-sphinx。
#2 楼 @small_fish__ 这里有 Sphinx RT 的全面介绍: http://sphinxsearch.com/docs/2.1.4/rt-indexes.html
#3 楼 @tylerlong oh,不知道你的做法是不是例如这样 http://freelancing-gods.com/posts/rewriting_thinking_sphinx_introducing_realtime_indices
#5 楼 @small_fish__ 我没有用 think-sphinx。sphinx 支持 mysql 协议,所以我直接通过编程语言的 mysql 客户端驱动,以 mysql 协议连接到 sphinx searchd 守护进程,然后直接执行 SphinxQL 语句(就如同你通过 ruby 连接到 mysql 执行 sql 语句那样)。SphinxQL 可以直接执行 insert/update 语句。一旦有数据更新,我就直接 insert/update,所以搜索引擎的索引是实时更新的,也就没必要用 delta 了。
如果你已经用 think-sphinx 了,改成我上面说的方案是很费劲的。这就好比用 ORM 和不用 ORM 的区别。我上面说的过程直接通过 SphinxQL 操纵 sphinx,就如同你抛弃 ActiveRecord 直接用 SQL 操纵数据库一样。你想想看,差别很大。我只是提一下这个方案。这方案并不适合所有场景。你可研究下,think-sphix 是否已经内置了 SphinxRT 的支持。如果支持的话,那就省事了。
#6 楼 @tylerlong 了解了饿,谢谢。。。