我正在使用solr进行搜索。
在我的模型客户端中:
searchable do
text :name
end
和控制器客户端:
def index
@search = Client.search do
fulltext params[:search]
end
@clients = @search.results
end
在控制台中:
cli = Client.search
=> <Sunspot::Search:{:fq=>["type:Client"], :start=>0, :rows=>30, :q=>"*:*"}>
如何获取对象类型(客户端)?
cli = cli.fq (undefined method `fq' for #<Sunspot::Search::StandardSearch:0xd22ab0c>)
cli = cli.type (undefined method `type' for #<Sunspot::Search::StandardSearch:0xd22ab0c>)
答案 0 :(得分:0)
我曾经需要这一次但没有找到解决办法。
我找到了一个有效的解决方法,但我不知道这是否是最正确的方法:
cli = Client.search
cli.hits.first.class_name
=> "Client"
答案 1 :(得分:0)
这不是Sunspot的常规用例,所以解决方案并不简单。
通过一些解决方法,您可以获得所搜索的所有类型的类,如下所示:
cli = Sunspot.new_search(Client)
cli.query.to_params.fetch(:fq, [])
.first[/[^:]+\z/].gsub(/[()]|OR/, '')
.split.map(&:constantize)
这不会触发实际的Solr搜索。