Symbole w ciągu zapytania dla elasticsearch

Mam „dokumenty” (aktywne rekordy) z atrybutem zwanym dewiacjami. Atrybut ma wartości takie jak „Bin X” „Bin $” „Bin q” „Bin%” itd.

Próbuję użyć opony / elasticsearch do wyszukiwania atrybutu. Używam analizatora białych znaków do indeksowania atrybutu odchylenia. Oto mój kod do tworzenia indeksów:

settings :analysis => {
    :filter  => {
      :ngram_filter => {
        :type => "nGram",
        :min_gram => 2,
        :max_gram => 255
      },
      :deviation_filter => {
        :type => "word_delimiter",
        :type_table => ['$ => ALPHA']
      }
    },
    :analyzer => {
      :ngram_analyzer => {
        :type  => "custom",
        :tokenizer  => "standard",
        :filter  => ["lowercase", "ngram_filter"]
      },
      :deviation_analyzer => {
        :type => "custom",
        :tokenizer => "whitespace",
        :filter => ["lowercase"]
      }
    }
  } do
    mapping do
      indexes :id, :type => 'integer'
      [:equipment, :step, :recipe, :details, :description].each do |attribute|
        indexes attribute, :type => 'string', :analyzer => 'ngram_analyzer'
      end
      indexes :deviation, :analyzer => 'whitespace'
    end
  end

Wyszukiwanie wydaje się działać poprawnie, gdy ciąg zapytania nie zawiera znaków specjalnych. Na przykładBin X zwróci tylko te rekordy, które zawierają słowaBin IX w nich. Jednak szukam czegoś takiegoBin $ lubBin % pokazuje wszystkie wyniki, które mają słowoBin prawie ignorując symbol (wyniki z symbolem pojawiają się wyżej w wynikach wyszukiwania bez).

Oto metoda wyszukiwania, którą stworzyłem

def self.search(params)
    tire.search(load: true) do
      query { string "#{params[:term].downcase}:#{params[:query]}", default_operator: "AND" }
        size 1000
    end
end

i oto jak buduję formularz wyszukiwania:

<div>
    <%= form_tag issues_path, :class=> "formtastic issue", method: :get do %>
        <fieldset class="inputs">
        <ol>
            <li class="string input medium search query optional stringish inline">
                <% opts = ["Description", "Detail","Deviation","Equipment","Recipe", "Step"] %>
                <%= select_tag :term, options_for_select(opts, params[:term]) %>
                <%= text_field_tag :query, params[:query] %>
                <%= submit_tag "Search", name: nil, class: "btn" %>
            </li>
        </ol>
        </fieldset>
    <% end %>
</div>

questionAnswers(1)

yourAnswerToTheQuestion