1

我正在使用thinking sphinx 在rails 应用程序上进行搜索。我有一个名为“高度”的浮点字段。我需要能够在该字段中搜索确切的值(即正好是 6.0,而不是 6.5)。我还需要能够在现场进行排序。

到目前为止我所拥有的:

indexes height, :sortable => true

问题:排序不正确,如果我搜索“6”,则返回 6.0 和 6.5

4

1 回答 1

3

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

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,由句号/句点分隔。因此,不幸的是,我不希望这方面的事情能优雅地解决。

于 2009-05-18T23:37:17.310 回答