如何使用 Sunspot/Solr 按 Rails 中的特定字段搜索模型



我用于太阳黑子的宝石和版本是:

sunspot_rails gem 版本 1.2.1
导轨版本 2.3.18

我尝试搜索的查询和搜索方法如下所示:

query_params = { :name => 'Joe Smith',
                 :email => 'joe.smith@email.com' }

如何搜索带有太阳黑子的模型,以便它通过电子邮件或仅名称进行搜索,因为某些搜索可能是空白的(下面的示例没有按预期工作(?

User.search do
   fulltext(query_params[:name], :fields => :name)
   fulltext(query_params[:email], :fields => :email)
end
*

我已经重新索引了模型,并且这些字段都可以在模型中搜索*

*编辑*user.rb模型的设置如下:

class User < ActiveRecord::Base 
   searchable do
      text :name
      text :email
   end
end

尝试如下简单方法

在模型上

searchable do
    text :name
    text :email
end

在操作控制器上

@search = User.search do |searcher|
    name = [:email]
    email= [:email]
    searcher.any do
         fulltext params[:name], :fields => name
         fulltext params[:email], :fields => email
    end
end
@users = @search.results #=> carry this to view

重新索引并取得良好效果,重新启动服务器

希望对你有帮助

any_of有帮助吗?

User.search
  any_of do
    fulltext(query_params[:name], :fields => :name)
    fulltext(query_params[:email], :fields => :email)
  end
end

User.search do
  any_of do
    with(:name, query_params[:name])
    with(:email, query_params[:email])
  end
end

尝试这个,因为它是一个文本字段

User.search do
  any_of do
    keywords query_params[:name], :fields => [:name]
    keywords query_params[:email], :fields => [:email]
  end
end

资源:https://github.com/sunspot/sunspot/wiki/Fulltext-search

最新更新