Sunspot автоматически экранирует специальные символы

Используя 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), то они должны автоматически экранироваться.


person Calin    schedule 07.01.2016    source источник


Ответы (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
person ashishmohite    schedule 12.01.2016
comment
Это моя текущая работа, только я предпочитаю уточнения, но я надеялся, что есть способ сделать это. - person Calin; 12.01.2016