class EasySolr::Queryer
Attributes
client_class_name[RW]
solr_settings[RW]
Public Class Methods
new(client_class_name)
click to toggle source
# File lib/easy_solr/queryer.rb, line 10 def initialize(client_class_name) nn_object = Object.const_get(client_class_name) @client_class_name = nn_object.table_name @solr_settings = nn_object::SOLR_SEVICE_CONFIG @expr = ::EasySolr::Expressions.new @expr.nn_custom_links = nn_object::LINKS end
Public Instance Methods
current_solr_connection()
click to toggle source
Description¶ ↑
获取 Solr 连接
# File lib/easy_solr/queryer.rb, line 38 def current_solr_connection if defined? @deal_search_connection @deal_search_connection else solr_url = "#{solr_settings[:host]}:#{solr_settings[:port]}#{solr_settings[:path]}" @deal_search_connection = RSolr.connect :url => solr_url end end
generate_scope(scope)
click to toggle source
Description¶ ↑
根据主键ID 生成scope
# File lib/easy_solr/queryer.rb, line 62 def generate_scope(scope) ## 执行顺序 ## 1、break_down ## 2、solr_pri_key || mysql_pri_key break_down(@expr.nn_custom_links) pri_ids = self.perform.map{|_item| _item[solr_pri_key].to_i} scope.where(" #{ client_class_name }.#{ mysql_pri_key } IN (?) ", pri_ids) end
generate_scope_str(scope)
click to toggle source
perform()
click to toggle source
Description¶ ↑
根据所有生成的信息 执行 Solr 模糊查询
# File lib/easy_solr/queryer.rb, line 23 def perform solr_str = @expr.query_string_for_solr solr_params = { :q => solr_str, :rows => 1000 } result = current_solr_connection.get 'select', :params => solr_params @expr.destroy! result_perform(result).result_items end