Eri*_* M. 3 search solr sunspot ruby-on-rails-3
我有一个sunspot/solr设置全文搜索模型属性.我的QA刚搜索了"和+,两者都导致了500错误:
Solr响应: orgapachelucenequeryParserParseException_Cannot_parse__Encountered_EOF_at_line_1_column_0_Was_expecting_one_of_____NOT______________________________QUOTED______TERM______PREFIXTERM______WILDTERM__________________NUMBER______TERM____________
如何使这些查询字符串安全?太阳黑子有办法解决这个问题吗?
Sunspot中没有方法可以过滤这些方法,因为它们在某些类型的Lucene查询中有效.Sunspot 默认使用DisMax Query Parser,因此您可以阅读其文档以了解有关这些字符的更多信息.
[ DisMax ]旨在支持用户提供的原始输入字符串,无需特殊转义."+"和" - "字符被视为后续术语的"强制"和"禁止"修饰符.包含在平衡引号字符中的文字""被视为短语[...]
如果您打算永远不要使用这些字符,您可以自己从查询中过滤它们(反斜杠是逃避减号).
Post.search do
keywords params[:q].gsub(/[+\-"]/,'')
end
Run Code Online (Sandbox Code Playgroud)
如果您在控制器中调用Sunspot的search方法,或者如果您solr_search从类自己的自定义search方法中调用Sunspot的方法,则可能需要在控制器方法中包装它.
| 归档时间: |
|
| 查看次数: |
1706 次 |
| 最近记录: |