思考狮身人面像 - 按十进制字段排序

时间:2015-10-13 23:52:37

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

我正在思考sphinx 3.1.0和使用MySQL 14.14的rails 3.2.13。

我试图按价格字段对结果进行排序。索引如下:

ThinkingSphinx::Index.define :book, :with => :active_record do
 indexes authors.title, :as => :title
 indexes price, :sortable => true, :as => :price, :type => :float
end

它的排序如下:

0.00
10.95
12.95
5.00
6.5
9.95

看起来它一直将价格字段视为字符串而不是浮点数或小数。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

indexes方法用于定义Sphinx字段 - 这些字段始终是字符串数据(无论如何,从Sphinx的角度来看,无论它们是否是数据库中的字符串)。

在这种情况下,Sphinx属性是一个更可靠的选项,因为它具有浮点数据类型的能力,并且可以根据其性质进行排序。这些是使用has方法定义的:

indexes authors.title, :as => :title
has price, :type => :float

您不需要:sortable选项(因为所有属性都是可排序的),也不需要:as选项(因为您直接引用列而不更改名称)。如果基础数据库列类型是浮点数或小数,则甚至可能不需要:type选项 - 在这两种情况下,Thinking Sphinx会自动将类型设置为:float