2

mongoid でタイヤ (https://github.com/karmi/tire) を使用しています。これが私のモデル定義です:

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

4

1 に答える 1

3

問題は次の場所で解決されました:

プロパティにkeywordアナライザーを使用します。tags_array

class SomethingWithTag
  # ...
  mapping do
    indexes :tags_array, analyzer: 'keyword'
  end
end
于 2012-12-13T10:10:31.373 に答える