2015-03-05 18 views
6

Şimdi arama API kullanarak ve ediyorum, completion suggester eklemem gerekiyor ben elasticsearch-raylar mücevher kullanıyorum.raylar - Elasticsearch tamamlama suggester ve arama API

Ben bir makaleyi aramak, her şey http://localhost:9200/articles/_search

"query": { 
    "multi_match": { 
     "query": "test", 
     "fields": [ 
     "title", "tags", "content" 
     ] 
    } 
    } 
} 

çalışır Ama tamamlama suggester uyguladık beri çalışması için as_indexed_json düzenlemek zorunda kaldı, ama şimdi arama API çalışmıyor artık sadece öneriler.

def self.search(query) 
    __elasticsearch__.search(
     { 
      query: { 
       multi_match: { 
        query: query, 
        fields: ['title', 'content', 'tags'] 
       } 
      } 
     }) 
end 

     def self.suggest(query) 
     Article.__elasticsearch__.client.suggest(:index => Article.index_name, :body => { 
      :suggestions => { 
       :text => query, 
       :completion => { 
        :field => 'suggest' 
       } 
      } 
     }) 
     end 

     def as_indexed_json(options={}) 
     { 
      :name => self.title, 
      :suggest => { 
       :input => self.title, 
       :output => self.title, 
       :payload => { 
        :content => self.content, 
        :tags => self.tags, 
        :title => self.title 
       } 
      } 
     }.as_json 
     end 

o _search ve aynı modelle birlikte çalışan _suggest mümkün mü: Burada

benim Madde modeli nedir?

+0

Yani, haritalama gibi nasıl görünüyor? – Tobi

cevap

5

Sadece elasticsearch içine kazıyorum, ama, anlayabildiğim kadarıyla, seri hale getirme işlevinde değişiklik yapmadan önce eklediklerinizi ekleyebilir ve indeksleri yeniden oluşturabilir, db'de iyi bir şekilde yaşayacaklar. Örneğin:

def as_indexed_json(options={}) 
     { 
      :name => self.title, 
      :suggest => { 
       :input => self.title, 
       :output => self.title, 
       :payload => { 
        :content => self.content, 
        :tags => self.tags, 
        :title => self.title 
       } 
      } 
     }.as_json.merge(self.as_json) # or the customized hash you used 

önlemek için endeksleri Eğer aliases and routing bakabilirsiniz fazlalık.

+0

Teşekkürler, işe yarıyor! – user2037696

İlgili konular