我正在使用思考sphinx来搜索rails应用程序。我有一个名为'height'的浮点字段。我需要能够在此字段中搜索确切的值(即恰好是6.0,而不是6.5)。我还需要能够对这个领域进行排序。
到目前为止我所拥有的:
indexes height, :sortable => true
问题: 没有正确排序,如果我搜索'6'
,则返回6.0和6.5答案 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,以句号/句号分隔。所以,不幸的是,我不希望这些事情能够优雅地发挥作用。