0

Я использую solr для поиска.Solr return type of object

В моей модели Клиент:

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

Мне это было нужно один раз и не нашли решения.

Я нашел обходной путь, который действителен, но я не знаю, если это самый правильный путь:

cli = Client.search 
cli.hits.first.class_name 
=> "Client" 
0

Это не совсем обычный случай использования пятнообразовательной, поэтому решение не совсем проста.

С немного обходного пути, вы можете получить классы всех типов разыскивается, как это:

cli = Sunspot.new_search(Client) 

cli.query.to_params.fetch(:fq, []) 
    .first[/[^:]+\z/].gsub(/[()]|OR/, '') 
    .split.map(&:constantize) 

Это не вызовет фактического поиска Solr.