class EasySolr::QueryItem
Attributes
nn_custom_links[RW]
Public Class Methods
new(custom_links, query_string, value)
click to toggle source
# 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
Public Instance Methods
replace_with_custom_links()
click to toggle source
Description¶ ↑
FIXME 这里使用gsub 还是有点风险的, 会导致 错误的覆盖
# 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()
click to toggle source
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 可用字符串
# 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