太阳黑子自动逃脱特殊角色

时间:2016-01-07 16:39:36

标签: sunspot sunspot-rails sunspot-solr

使用sunspot和solr 4+可以自动转义特殊字符。

例如,在简单的全文搜索中,例如:

Post.search do
  fulltext term
end

如果term包含任何特殊字符(http://lucene.apache.org/core/4_0_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#Regexp_Searches),则应自动转义。

1 个答案:

答案 0 :(得分:1)

在初始化程序文件中添加以下代码

RE_ESCAPE_SOLR = /([-+!\(\)\{\}\[\]^"~*?:\\]|&&|\|\|)/

class String
  def escape_solr
    gsub(RE_ESCAPE_SOLR) { |e| "\\#{e}" }
  end
end

每当搜索任何内容时,您都可以致电

Post.search do
  fulltext term.escape_solr
end