思考Sphinx和负面ID

时间:2014-06-30 14:55:39

标签: ruby-on-rails thinking-sphinx

我有一个User模型和一个Message模型,用户可以相互发送消息,我使用Thinking Sphinx gem进行全文搜索,作为Ruby中Sphinx Search的连接符在Rails上。

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

现在我遇到的问题是Sphinx似乎忽略了消息中带有负ID的用户的搜索(=外键sender_idhas - 属性)。

我的Message模型中定义的索引:

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

  has sender_id, recipient_id, created_at, updated_at
end

搜索在MessagesController

中完成
@received_messages = current_user.received_messages.search params[:q]

如果current_user的ID为负,则不会返回任何结果。当我做reindex时,它显示所有Sphinx收集了所有消息,没有遗漏任何消息。

有没有办法让Sphinx接受has - 属性的负数?或任何解决方法的想法?

1 个答案:

答案 0 :(得分:2)

Sphinx的整数类型是无符号的,因此不会收集负值。

您可以强制该类型为浮点数,但不要忘记对这些属性浮点数进行任何过滤:

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