通过思考狮身人面像的浮动字段搜索和排序

时间:2009-05-18 19:06:52

标签: ruby-on-rails sphinx

我正在使用思考sphinx来搜索rails应用程序。我有一个名为'height'的浮点字段。我需要能够在此字段中搜索确切的值(即恰好是6.0,而不是6.5)。我还需要能够对这个领域进行排序。

到目前为止我所拥有的:

indexes height, :sortable => true

问题:     没有正确排序,如果我搜索'6'

,则返回6.0和6.5

1 个答案:

答案 0 :(得分:3)

如果您正在处理浮点值,最好将它们作为属性而不是字段:

define_index do
  # ... other fields

  has height
end

默认情况下,属性是可排序的(实际上,如果你添加:sortable to a field,它所做的就是在Thinking Sphinx的引擎下创建一个属性),所以这应该允许你排序。

当然,这不允许你搜索的高度,所以你也需要一个字段:

define_index do
  # ... other fields
  indexes height, :as => :height_field

  has height
end

我给该字段添加了别名,因为您不能将字段和属性命名为相同的东西。

鉴于这一切,你正在寻找一个浮点数,而对于Sphinx,所有字段都是字符串。它读取6.5作为两个单词 - 6和5,以句号/句号分隔。所以,不幸的是,我不希望这些事情能够优雅地发挥作用。