思考Sphinx和负面ID

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

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

现在我sender_id的问题是,Sphinx似乎忽略了对具有负ID的用户的消息搜索(=外键sender_idsender_id )。

在我的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 -Attributes的负数? 或任何解决方案的想法?

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

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

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