Запросы Sunspot / Solr, заканчивающиеся логическими операторами AND / OR / NOT, приводят к ошибке - PullRequest
3 голосов
/ 05 мая 2011

Я заметил, что запросы, заканчивающиеся логическими операторами, такими как пример AND / OR / NOT ('this AND'), приведут к ошибке.Теперь, что было бы лучшим способом справиться с этим?Просто обрезать или избежать всех запросов, заканчивающихся одним из них?Обратите внимание, что это также происходит для запросов, начинающихся с одного из этих слов.И иногда действительные имена заканчиваются такими словами, как Орегон ИЛИ.

1 Ответ

6 голосов
/ 05 мая 2011

Я считаю, что лучше всего избегать любых экземпляров 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"

Имейте в виду, что при экранировании И / ИЛИ / НЕ в строках с двойными кавычками вам нужно две обратные косые черты:

fulltext "Oregon \\OR"
...