以逻辑运算符AND/OR/NOT结尾的Sunspot/Solr查询会导致错误

Bas*_*lah 3 solr ruby-on-rails sunspot-rails

我注意到以AND/OR/NOT示例('this AND')之类的逻辑运算符结尾的查询将导致错误.现在处理这个问题的最佳方法是什么?只是删除或逃避以其中一个结尾的所有查询?请注意,对于以这些单词之一开头的查询,也会发生这种情况.有时候,有效的名字会以这样的词结尾,比如Oregon OR.

Dyl*_*kow 6

我相信在您的查询中转义任何不是布尔逻辑的AND/OR/NOT实例将是您最好的选择:

Article.search do
  fulltext 'Oregon OR'
end
# => Throws error along the lines of this:
# RSolr::RequestError: Solr Response: orgapachelucenequeryParserParseException_Cannot_parse_Oregon_OR_Encountered_EOF_at_line_1_column_9_Was_expecting_one_of_____NOT______________________________QUOTED______TERM______PREFIXTERM______WILDTERM__________________NUMBER______TERM____________


Article.search do
  fulltext 'Oregon \OR'
end
# => Returns results with "Oregon OR"
Run Code Online (Sandbox Code Playgroud)

请记住,在双引号字符串中转义AND/OR/NOT时,需要两个反斜杠:

fulltext "Oregon \\OR"
Run Code Online (Sandbox Code Playgroud)