2012-08-06 1 views
2

나는 mongoid와 함께 타이어 (https://github.com/karmi/tire)를 사용하고 있습니다. elasticsearch를 사용하여 공백으로 태그를 필터링합니다

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}을 말해봐 : 여기 내 모델 정의입니다.

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

+0

HTTPS에서 해결 : // GitHub의

tags_array 속성에 대한 keyword 분석기를 사용하여 여기에 테스트 코드의 작은 조각이다 .com/karmi/ty/issues/424 – karmi

+0

그런데 왜 Github에서 질문을 복제합니까? – karmi

답변

3

문제 :

class SomethingWithTag 
    # ... 
    mapping do 
    indexes :tags_array, analyzer: 'keyword' 
    end 
end