Class: EasySolr::QueryItem

Inherits:
Object
  • Object
show all
Defined in:
lib/easy_solr/query_item.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(custom_links, query_string, value) ⇒ QueryItem

Returns a new instance of QueryItem.



7
8
9
10
11
# File 'lib/easy_solr/query_item.rb', line 7

def initialize(custom_links, query_string, value)
  @nn_solr_query_string = query_string
  @nn_solr_value        = value
  @nn_custom_links      = custom_links
end

Instance Attribute Details

Returns the value of attribute nn_custom_links.



5
6
7
# File 'lib/easy_solr/query_item.rb', line 5

def nn_custom_links
  @nn_custom_links
end

Instance Method Details

Description

FIXME 这里使用gsub 还是有点风险的, 会导致 错误的覆盖



45
46
47
48
49
50
51
52
53
54
# File 'lib/easy_solr/query_item.rb', line 45

def replace_with_custom_links
  nn_custom_links.each_pair do |_link, _value|
    if @nn_solr_query_string.include? _link
      @nn_solr_query_string.gsub!(_link, _value[:solr_name])
      break
    end
  end

  @nn_solr_query_string.concat(" ")
end

#traslate_to_solr_strObject

Description

最小单元的转化,将MySQL语法转转换成 Solr 可识别的查询字符串

第一步,参考 ::EasySolr::Expressions#solr_where
expr.solr_where(" title = ? and id = ? ", '奥迪', '620460')
转换成 "title = ?", '奥迪'

第二步
"title = ?", '奥迪'
转换成 "title : 奥迪"

第三步
"title : 奥迪"
转换成
"title_texts : 奥迪"

第四步, 参考 ::EasySolr::Expressions#query_string_for_solr
 组装所有QueryItem 生成 Solr 可用字符串


34
35
36
37
# File 'lib/easy_solr/query_item.rb', line 34

def traslate_to_solr_str
  @nn_solr_query_string.gsub!("=", ':').gsub!("?", @nn_solr_value)
  self.replace_with_custom_links
end