【问题标题】:Solr return type of objectSolr 返回对象的类型
【发布时间】:2014-12-16 17:59:03
【问题描述】:

我正在使用 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>)

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 solr sunspot-rails sunspot-solr


    【解决方案1】:

    我曾经需要这个,但没有找到解决方案。

    我确实找到了一个有效的解决方法,但我不知道这是否是最正确的方法:

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

    【讨论】:

      【解决方案2】:

      这并不是 Sunspot 的常规用例,因此解决方案并不简单。

      通过一些变通方法,您可以像这样获取正在搜索的所有类型的类:

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

      这不会触发实际的 Solr 搜索。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-30
        • 1970-01-01
        • 2012-08-20
        • 2020-06-14
        • 2012-05-04
        • 2016-05-14
        • 2017-01-21
        • 1970-01-01
        相关资源
        最近更新 更多