我有一个User
模型和一个Message
模型,用户可以相互发送消息,我使用Thinking Sphinx gem进行全文搜索,作为Ruby中Sphinx Search的连接符在Rails上。
在我的User
模型中,我为系统用户使用负ID,为普通用户使用正ID。
现在我遇到的问题是Sphinx似乎忽略了消息中带有负ID的用户的搜索(=外键sender_id
为has
- 属性)。
我的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
- 属性的负数?或任何解决方法的想法?
答案 0 :(得分:2)
Sphinx的整数类型是无符号的,因此不会收集负值。
您可以强制该类型为浮点数,但不要忘记对这些属性浮点数进行任何过滤:
has sender_id, recipient_id, :type => :float
has created_at, updated_at