2015-03-05 11 views
6

Korzystam z interfejsu API wyszukiwania, a teraz muszę dodać completion suggester, używam klejnotu elasticsearch-rails.szyny - sugestia uzupełnienia Elasticsearch i interfejs API wyszukiwania

Kiedy szukać artykułu, wszystko działa http://localhost:9200/articles/_search

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

Ale odkąd wprowadziła zausznika zakończenia musiałem edytować as_indexed_json aby to działało, ale teraz Search API nie działa już więcej, tylko sugestie.

Oto mój model artykułu:

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 

Czy to możliwe, aby mieć _search i _suggest pracuje razem z tego samego modelu?

+0

Jak wygląda twoje mapowanie? – Tobi

Odpowiedz

5

Po prostu szukam elastycznego wyszukiwania, ale, o ile rozumiem, możesz dodać to, co było przed modyfikacją w funkcji serializera i odtworzyć indeksy, będą one dobrze żyć razem w db. Na przykład:

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 

Aby uniknąć nadmiarowości indeksów, można spojrzeć na aliases and routing.

+0

dziękuję, to działa! – user2037696

Powiązane problemy