我正在做一个应用程序搜索,它可能会过滤几个不同的字段——其中一些字段并不存在于每个索引中。
目前,使用复杂的 if elsif elsif 事物来整理要在控制器中搜索的正确类。
如果一个条件字段不存在,有没有办法让思考狮身人面像自动不搜索模型,而不是像目前似乎发生的那样忽略条件。
例如
ThinkingSphinx.search(@query, :conditions => {:genres =>"classical-music"}, :match_mode => :extended, :classes => [Performer, Promoter, Tour, Venue, User], :order => :name_sort, :sort_mode => :asc)
用户没有流派,但包含在搜索结果中
更新
它绝对不像我想要的那样工作。我的用户模型在索引中没有流派字段,因此我希望在搜索流派时将其排除在外。
示例搜索
User.search("anne")
Sphinx Query (3.6ms) anne
Sphinx Found 1 result
User Load (0.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` IN (80)
=> [#<User id: 80, first_name: "Anne", last_name: "Bowers", bio: nil, email: "anne@bowers.com", phone: nil, created_at: "2012-11-20 09:36:05", updated_at: "2012-11-20 09:36:05", role: nil, promoter_id: nil, performer_id: nil, job_title: nil>]
ThinkingSphinx.search("anne", :conditions => {:genres => "music"}, :match_mode => :extended, :classes => [User], :order => :name_sort, :sort_mode => :asc)
Sphinx Query (3.2ms) anne @genres music
Sphinx Found 1 result
User Load (0.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` IN (80)
=> [#<User id: 80, first_name: "Anne", last_name: "Bowers", bio: nil, email: "anne@bowers.com", phone: nil, created_at: "2012-11-20 09:36:05", updated_at: "2012-11-20 09:36:05", role: nil, promoter_id: nil, performer_id: nil, job_title: nil>]
如果用户被排除在外,那就太好了。