Ruby on rails 3.2 传统数据Sphinx的索引生成了一些错误

Ruby on rails 3.2 传统数据Sphinx的索引生成了一些错误,ruby-on-rails-3.2,sphinx,thinking-sphinx,Ruby On Rails 3.2,Sphinx,Thinking Sphinx,正在创建rails 3.2.18应用程序,从rails 2.3.10应用程序迁移数据。数据通过pg_dump进行移植,并通过psql命令加载,没有任何错误 通过thinking_sphinx编制索引的13个模型中的一个模型出现了一些错误。在8.5个文档中,只有1个被整体索引 indexing index 'norm_core'... ERROR: index 'norm_core': sql_range_query: ERROR: integer out of range (DSN=pgsq

正在创建rails 3.2.18应用程序,从rails 2.3.10应用程序迁移数据。数据通过pg_dump进行移植,并通过psql命令加载,没有任何错误

通过thinking_sphinx编制索引的13个模型中的一个模型出现了一些错误。在8.5个文档中,只有1个被整体索引

indexing index 'norm_core'...
ERROR: index 'norm_core': sql_range_query: ERROR:  integer out of range
 (DSN=pgsql://jerdvo:***@localhost:5432/fna_development).
total 1019 docs, 234688 bytes
索引文件是

ThinkingSphinx::Index.define :norm, :with => :active_record do
    indexes data
    indexes titolo
    indexes massima
    indexes numero
    indexes norm_fulltext
    indexes region.name, :as => :region
    indexes normtype.name, :as => :normtype

    has region_id
    has normtype_id
    has data, :as => :data_timestamp
end
我不确定最后一个带有
data\u timestamp
的元素的语法,因为它可能是遗留语法。。。它适用于日期字段-从架构:

    t.date     "data"
其他模型在日期上具有相同的索引方案。但是没有人产生错误。

[假设该行必须更改,是否应该首先执行doe
rake ts:configure
,然后再进行索引或重建?]

调试该行的两个技巧:

  • 注释掉所有属性(
    具有
    调用),运行
    ts:index
    任务,确认其工作。然后将每个属性一次引入一个,看看是哪一个导致了错误
  • 检查任何不起作用的属性列的最大值(例如,
    从norms
    中选择MAX(data)),查看该数据是否有效,并且是否在32位无符号整数的范围内
如果它是进入64位int区域的外键之一,则可以将其指定为数据类型:

has normtype_id, :type => :bigint
如果是日期列,则需要通知Thinking Sphinx将日期/时间值转换为64位整数时间戳,方法是在
config/Thinking\u Sphinx.yml
中的每个必要环境中添加以下内容:

development:
  64bit_timestamps: true
我想问题的第三个根源是主键大于32位整数,但是TS应该检测bigint列并适当地处理文档ID。当然,Sphinx也需要编译以处理64位文档ID,但我希望这是默认值(为了参考起见,编译标志是
--enable-id64


如果这些都没有帮助。。。那么,好吧,我不知道原因可能是什么。

击中它的头部!是日期栏。我想
64位\u时间戳:true
也应该有一天投入生产。查看thinking_sphinx配置文件有这样一行(这可能是问题的真正根源)
use_64\u bit:true
的用途似乎中等。。。这是我的遗产吗?保持移除?是的,这是针对TS v1/v2的-这个新设置是等效的。