使用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),则应自动转义。
答案 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