Ruby on rails 3 如何在sunspot/solr全文搜索中转义非法字符?
我有一个用于全文搜索模型属性的sunspot/solr设置。我的QA刚刚搜索了“和+,这两个都导致了500个错误: 回复:Ruby on rails 3 如何在sunspot/solr全文搜索中转义非法字符?,ruby-on-rails-3,search,solr,sunspot,Ruby On Rails 3,Search,Solr,Sunspot,我有一个用于全文搜索模型属性的sunspot/solr设置。我的QA刚刚搜索了“和+,这两个都导致了500个错误: 回复:orgap>orgap>orgap>orgap>orgap>orgap>orgap>r回复回复:orgap>orgap>orgap>orgap>orgap>orgaporgap>orgap>orgap>orcocop>无法解析,无法解析,无法解析,遇到了,在线路上的线上,1柱上,1柱上,列上,0 0,你,0 0,0,你是,0,你是,你是,你期待,你,你是,你是,你期待,你期待
orgap>orgap>orgap>orgap>orgap>orgap>orgap>r回复回复:orgap>orgap>orgap>orgap>orgap>orgaporgap>orgap>orgap>orcocop>无法解析,无法解析,无法解析,遇到了,在线路上的线上,1柱上,1柱上,列上,0 0,你,0 0,0,你是,0,你是,你是,你期待,你,你是,你是,你期待,你期待,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,一个,对的,_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
如何使这些查询字符串安全?Sunspot中是否有处理此问题的方法?Sunspot中没有过滤这些字符串的方法,因为它们在某些类型的Lucene查询中有效。Sunspot默认使用,因此您可以阅读其文档以了解有关这些字符的更多信息
[]旨在支持用户提供的原始输入字符串,无需特殊转义。'+'和'-'字符被视为后续术语的“必需”和“禁止”修饰符。用平衡引号字符包装的文本'''被视为短语[…]
如果您不打算使用这些字符,您可以自己从查询中筛选它们(反斜杠是转义减号)
如果你在控制器中调用Sunspot的search
方法,或者如果你在你的类自己的自定义search
方法中调用Sunspot的solr\u search
方法,那么你可能需要将其封装在控制器方法中。可能重复的代码,但更明智的是,更聪明的人把它传给了我:“abc+-/def”.gsub(/[+\-“\/]/){c}“\\”+c}输出=>abc\+-/def
,这实际上会转义字符,以防您在搜索Solr时试图使用这些字符。
Post.search do
keywords params[:q].gsub(/[+\-"]/,'')
end