【问题标题】:Sunspot automaticly escape special characters太阳黑子自动转义特殊字符
【发布时间】:2016-01-07 16:39:36
【问题描述】:

使用 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),那么它们应该被自动转义。

【问题讨论】:

    标签: sunspot sunspot-rails sunspot-solr


    【解决方案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
    

    【讨论】:

    • 这是我目前的工作,只是我更喜欢改进,但我希望有一个内置的方法来做到这一点。
    猜你喜欢
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多