【发布时间】:2015-01-13 09:56:35
【问题描述】:
Thinking Sphinx 没有找到任何列值为负数的记录。在我的例子中,该列是“site_id”,它可以包含 -1(我们使用 -1 而不是 NULL)。我的索引看起来像下面的示例(我分别尝试了四个不同的示例):
ThinkingSphinx::Index.define :incident, with: :active_record, delta: ThinkingSphinx::Deltas::ResqueDelta do
indexes site_id
# indexes site_id, type: :float
# has site_id
# has site_id, type: :float
end
我尝试的解决方案是根据this answer 和this answer,但它对我不起作用。我的 Sphinx 版本不支持 == 浮点运算符。我明白了:
sphinxql:此版本仅支持 >=、
升级 Sphinx 并不是一个真正的选择。还可以做些什么来完成这项工作?
【问题讨论】:
-
当你改变属性的类型时,你是在重新生成索引吗?狮身人面像索引将需要重新创建(ts:rebuild 任务?) - 你也读过提到需要将过滤器更改为正确类型的答案。
-
是的,我运行了 ts:rebuild。是的,我将过滤器作为浮点数运行,但我的 Sphinx 版本不允许:“sphinxql:此版本仅支持 >=、
-
你试过 bigint 类型吗?它至少是签名的。或者可以重写你的过滤器。例如
== -1可以重写为<= 0.5 -
是的,bigint 工作得很好。谢谢,你可以写一个答案...
标签: ruby-on-rails sphinx thinking-sphinx