В Sunspot нет метода для их фильтрации, потому что они действительны в определенных видах запросов Lucene.Sunspot по умолчанию использует DisMax Query Parser , поэтому вы можете прочитать его документацию, чтобы узнать больше об этих символах.
[ DisMax ] предназначен длябыть поддерживает необработанные строки ввода, предоставляемые пользователями без специального экранирования.Символы «+» и «-» рассматриваются как «обязательные» и «запрещенные» модификаторы для последующих терминов.Текст, заключенный в символы сбалансированной кавычки '"', обрабатываются как фразы […]
Если вы не собираетесь использовать эти символы, вы можете самостоятельно отфильтровать их по запросам (обратная косая черта - экранировать знак минус).).
Post.search do
keywords params[:q].gsub(/[+\-"]/,'')
end
Возможно, вы захотите обернуть это в методе контроллера, если вы вызываете метод search
Sunspot внутри контроллера, или метод модели, если вы вызываете метод solr_search
Sunspot.из собственного пользовательского метода search
вашего класса.