2017-01-09 4 views
0

Я использую elasticsearch-rails и жемчужину elasticsearch-model для поиска слов в моем приложении rails.Elalsearch рельсы не получают правильного ответа

Я хочу сделать свой регистр поиска нечувствительным и быть независимым от плюрализации. Я много исследовал в Google, но получил представление о том, как это сделать, используя анализатор, но не успех. Поэтому мне пришлось опубликовать новый вопрос.

Вот моя модель, где я хочу найти, чтобы иметь место

require 'elasticsearch/model' 

class Article < ActiveRecord::Base 
    include Elasticsearch::Model 
    include Elasticsearch::Model::Callbacks 

    settings index: { number_of_shards: 1 } do 
    mappings dynamic: 'false' do 
     indexes :title, analyzer: 'english', index_options: 'offsets' 
     indexes :text, analyzer: 'english' 
    end 
    end 

    def self.search(query) 
    __elasticsearch__.search(
     { 
     query: { 
      multi_match: { 
      query: query, 
      fields: ['title^10', 'text'] 
      } 
     }, 
     highlight: { 
      pre_tags: ['<em>'], 
      post_tags: ['</em>'], 
      fields: { 
      title: {}, 
      text: {} 
      } 
     } 
     } 
    ) 
    end 
end 

# Delete the previous articles index in Elasticsearch 
Article.__elasticsearch__.client.indices.delete index: Article.index_name rescue nil 

# Create the new index with the new mapping 
Article.__elasticsearch__.client.indices.create \ 
    index: Article.index_name, 
    body: { settings: Article.settings.to_hash, mappings: Article.mappings.to_hash } 

# Index all article records from the DB to Elasticsearch 
Article.import 

#Article.import force: true 

Мои вопросы как я искать слово? футболка, футболка, футболки должны совпадать. Любые ссылки для дальнейших исследований также полезны. Спасибо

ответ

0

Один из метода поиска в таблице:

User.where("firstname ILIKE ? OR lastname ILIKE ?", "%#{params[q]}%", "%#{params[q]}%"); 

где

User is Model 

params[q] is search query parameter. 
+0

извините, но я не получил его могли бы вы объяснить me.because я? Я новичок в рубине? –

+0

открытая консоль рельсов для тестирования. User.where ("firstname ILIKE? ИЛИ lastname ILIKE?", "% # {Params [q]}%", "% # {params [q]}%") где Пользователь - это имя модели firstname и lastname являются атрибутами или именем столбца params [: q] - это параметр запроса – puneet18

+0

Model.where ("column_name ILIKE?", "% # {query_string}%") – puneet18

Смежные вопросы