Ruby on rails 思考斯芬克斯与否定id

Ruby on rails 思考斯芬克斯与否定id,ruby-on-rails,thinking-sphinx,Ruby On Rails,Thinking Sphinx,我有一个用户模型和一个消息模型,在这两个模型中,用户可以互相发送消息,我使用全文搜索作为RubyonRails中的连接器 在我的User模型中,我对系统用户使用负ID,对普通用户使用正ID 现在我遇到了一个问题,Sphinx似乎忽略了那些id为负(=外键sender\u idashas-Attribute)的用户在邮件中的搜索 我的消息中定义的索引型号: define_index 'messages_index' do indexes title, :sortable => true

我有一个
用户
模型和一个
消息
模型,在这两个模型中,用户可以互相发送消息,我使用全文搜索作为RubyonRails中的连接器

在我的
User
模型中,我对系统用户使用负ID,对普通用户使用正ID

现在我遇到了一个问题,Sphinx似乎忽略了那些id为负(=外键
sender\u id
as
has
-Attribute)的用户在邮件中的搜索

我的
消息中定义的索引
型号:

define_index 'messages_index' do
  indexes title, :sortable => true
  indexes body

  has sender_id, recipient_id, created_at, updated_at
end
搜索在
消息controller
中完成:

@received_messages = current_user.received_messages.search params[:q]
如果
当前用户
的ID为负值,则不会返回结果。当我做一个
reindex
时,它显示所有Sphinx收集了所有消息,没有一条被遗漏


有没有办法教斯芬克斯接受
has
-属性的负数?或者任何解决方法的想法?

斯芬克斯的整数类型是无符号的,因此不会收集负值

您可以强制该类型为float,但不要忘记对这些属性float进行任何筛选:

has sender_id, recipient_id, :type => :float
has created_at, updated_at

不知道每个属性都可以设置
:type
,这在文档中没有提到?!我使用了
:type=>:bigint
,它工作正常,不会出现
:float
整数值可能存在的问题。非常感谢!