思考Sphinx没有将属性从:decimal转换为:在PostGresql中浮动

时间:2013-03-19 03:48:12

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

在Thinking_Sphinx上遇到一些麻烦。致白:

我有一个餐厅模型和一个具有以下关系的评论模型:

Restaurant Has_many Reviews through relationships
Review belongs_to Restaurant through relationships

每个评论都有一个十进制系统的评级,增量为0.5。

我在Thinking Sphinx中搜索餐馆,并将评论评级设置为属性如下(我这样做,所以结果按评级值的降序排序):

has reviews.rating, :as => :review_rating, :type => :float

这是我在终端中对Thinking Sphinx进行索引时得到的错误:

indexing index 'restaurant_core'...
ERROR: source 'restaurant_core_0': expected attr type ('uint' or 'timestamp' or 'bigint') in sql_attr_multi, got 'float review_rating from field'.
ERROR: index 'restaurant_core': failed to configure some of the sources, will not index.

有趣的故事:当我将:type更改为:integer时,如下所示:

has reviews.rating, :as => :review_rating, :type => :integer

我没有收到错误。

我正在运行Ruby on Rails 3.2.11,Thinking Sphinx 3.0.1,Ubuntu 12.10

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您的问题是,RestaurantReviewreviews.rating,但您将has "AVG(reviews.rating)", :as => :review_rating, :type => :float 编入索引为单个值。您应该将索引更改为计算评论的某些聚合(例如,平均值,中位数,最高或最低),或使用多值属性(MVA)。但是,MVA只能是整数,时间戳或布尔值。

例如,要将评级的平均值作为属性值,这样的事情应该有效:

sphinx.conf

当然,确切的代码取决于您的表名等。如果您遇到问题,请检查生成的{{1}}文件。