Class: EasySolr::QueryItem
- Inherits:
-
Object
- Object
- EasySolr::QueryItem
- Defined in:
- lib/easy_solr/query_item.rb
Instance Attribute Summary collapse
-
#nn_custom_links ⇒ Object
Returns the value of attribute nn_custom_links.
Instance Method Summary collapse
-
#initialize(custom_links, query_string, value) ⇒ QueryItem
constructor
A new instance of QueryItem.
-
#replace_with_custom_links ⇒ Object
Description.
-
#traslate_to_solr_str ⇒ Object
Description.
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
#nn_custom_links ⇒ Object
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
#replace_with_custom_links ⇒ Object
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_str ⇒ Object
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 |