我正在开发使用Thinking Sphinx的Ruby on Rails应用程序。不幸的是,不时(每月几次)搜索往往会返回不良结果(许多文档丢失)。重新索引有所帮助,但这不是生产的解决方案。
即使我在rails控制台中输入简单查询(例如ThinkingSphinx.search 'skalee'
),我也会遇到不好的结果。 Sphinx search
工具返回正确的结果,因此索引显然可以正常工作。
当我输入ThinkingSphinx.search('skalee').results[:words]
时,我会看到正确的点击次数(例如,30个文档中找到的术语),但ThinkingSphinx.search('skalee').results[:matches]
包含2个文档。 results[:words]
中的数字与search
中的数字相同。
我正在使用延迟增量,但即使我没有运行ts:dd。
,这个问题也会出现答案 0 :(得分:0)
答案 1 :(得分:0)
思考Sphinx(或延迟Delta,我记不太清楚)为所有模型添加特殊的内部属性(sphinx_deleted
或类似的东西)。它用于过滤掉销毁的记录。不幸的是,它不时很糟糕。修改gem之后(摆脱这个属性)一切正常。当然,我需要等到完全重新索引(我每晚都会执行)以从索引中删除已销毁的记录,但这在我的情况下是一个小缺点。或者,我可以使用Sphinx的杀戮列表功能来过滤掉已删除的条目。