Использование asticsearch для фильтрации по тегам с пробелами

Я использую шину (https://github.com/karmi/tire) с mongoid. Вот мое определение модели:

class SomethingWithTag
  include Mongoid::Document
  include Mongoid::Timestamps
  field :tags_array, type: Array

  include Tire::Model::Search
  include Tire::Model::Callbacks
  mapping do
      indexes :tags_array, type: :array, index: :not_analyzed
  end
end

Скажем, у меня есть документ {tags_array: ["hello world"]}. Тогда следующие запросы работают нормально:

SomethingWithTag.tire.search { filter :terms, :tags_array => ["hello"] }
SomethingWithTag.tire.search { filter :terms, :tags_array => ["world"] }
SomethingWithTag.tire.search { filter :terms, :tags_array => ["hello", "world"] }

Но следующее не возвращает никаких результатов:

SomethingWithTag.tire.search { filter :terms, :tags_array => ["hello world"] }

Что я должен сделать, чтобы это работало?

Изменить: вот небольшой кусок кода для тестирования: http://pastebin.com/n1rUtK3e

1 ответ

Проблема решена в:

Использовать keyword анализатор для tags_array имущество:

class SomethingWithTag
  # ...
  mapping do
    indexes :tags_array, analyzer: 'keyword'
  end
end
Другие вопросы по тегам