我正在使用thinking sphinx 在rails 应用程序上进行搜索。我有一个名为“高度”的浮点字段。我需要能够在该字段中搜索确切的值(即正好是 6.0,而不是 6.5)。我还需要能够在现场进行排序。
到目前为止我所拥有的:
indexes height, :sortable => true
问题:排序不正确,如果我搜索“6”,则返回 6.0 和 6.5
我正在使用thinking sphinx 在rails 应用程序上进行搜索。我有一个名为“高度”的浮点字段。我需要能够在该字段中搜索确切的值(即正好是 6.0,而不是 6.5)。我还需要能够在现场进行排序。
到目前为止我所拥有的:
indexes height, :sortable => true
问题:排序不正确,如果我搜索“6”,则返回 6.0 和 6.5
如果您正在处理浮点值,最好将它们作为属性而不是字段:
define_index do
# ... other fields
has height
end
默认情况下,属性是可排序的(实际上,如果您将 :sortable 添加到字段,它所做的只是在 Thinking Sphinx 的引擎盖下创建一个属性),因此这应该允许您进行排序。
当然,这不允许您搜索高度,因此您还需要一个字段:
define_index do
# ... other fields
indexes height, :as => :height_field
has height
end
我给该字段起了一个别名,因为您不能将字段和属性命名为相同的东西。
鉴于所有这些,您正在搜索浮点数,对于 Sphinx,所有字段都是字符串。它将 6.5 读取为两个单词 - 6 和 5,由句号/句点分隔。因此,不幸的是,我不希望这方面的事情能优雅地解决。