我在开发中使用 Rails 3.2.3、Sphinx 2.0.1 beta 和 Postgresql 9.1.3,索引如下:
define_index do
indexes :name
indexes :city
has :id
has :gender_cd, as :gender, type: :integer
has "extract(year from age(birthdate))", as: :age, type: :integer
set_property delta: true
end
它在开发和工作、搜索等方面的索引很好。但是当我部署到生产服务器时,我从索引器中得到以下信息:
(DSN=blah blah blah).
total 0 docs, 0 bytes
total 0.023 sec, 0 bytes/sec, 0.00 docs/sec
indexing index 'user_delta'...
ERROR: index 'user_delta': sql_range_query: ERROR: column "users.birthdate" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: ... "users"."gender_cd" AS "gender", extract(year from age(birthdate)...
我认为问题出在 8.4 pgsql 中,但即使在 9.1.4 中仍然存在。sphinx 版本比 dev 中的 2.0.4 版本更新。
我知道 GROUP BY 包含的这个问题,这在使用 Postgres 时是特定的,但为什么它在开发环境中工作?