【问题标题】:Thinking Sphinx - filtering by negative attribute doesn't work思考狮身人面像 - 按负面属性过滤不起作用
【发布时间】: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 answerthis answer,但它对我不起作用。我的 Sphinx 版本不支持 == 浮点运算符。我明白了:

sphinxql:此版本仅支持 >=、

升级 Sphinx 并不是一个真正的选择。还可以做些什么来完成这项工作?

【问题讨论】:

  • 当你改变属性的类型时,你是在重新生成索引吗?狮身人面像索引将需要重新创建(ts:rebuild 任务?) - 你也读过提到需要将过滤器更改为正确类型的答案。
  • 是的,我运行了 ts:rebuild。是的,我将过滤器作为浮点数运行,但我的 Sphinx 版本不允许:“sphinxql:此版本仅支持 >=、
  • 你试过 bigint 类型吗?它至少是签名的。或者可以重写你的过滤器。例如== -1 可以重写为<= 0.5
  • 是的,bigint 工作得很好。谢谢,你可以写一个答案...

标签: ruby-on-rails sphinx thinking-sphinx


【解决方案1】:

bigint 类型应该很有用 - 它是唯一一个带符号的 sphinx 属性整数类型。

(发现比较浮点数更复杂,因为比较需要实现线程保持 - 因为浮点数不精确 - sphinx 不使用过滤器执行此操作,但可以使用 IF 函数解决 - 不知道如何将其放入 thinkingsphinx )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多