Рельсы Elasticsearch не получают должного ответа

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

Я хочу сделать свой поиск нечувствительным к регистру и не должен зависеть от множественного числа. Я много искал в 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

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


person Prajakta Dumbre    schedule 09.01.2017    source источник


Ответы (1)


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

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

куда

User is Model

params[q] is search query parameter.
person puneet18    schedule 09.01.2017
comment
извините, но я не понял? не могли бы вы объяснить мне. потому что я новичок в рубине? - person Prajakta Dumbre; 09.01.2017
comment
откройте консоль rails для тестирования. User.where(firstname ILIKE ? OR lastname ILIKE ?, %#{params[q]}%, %#{params[q]}% ), где User — имя модели, firstname и lastname — атрибуты или имя столбца params[:q ] — параметр запроса - person puneet18; 09.01.2017
comment
Model.where(column_name ILIKE ?, %#{query_string}%) - person puneet18; 09.01.2017
comment
Чтобы найти компанию, название которой содержит Google, выполните: $ Company.where(имя или '%Google%') - person puneet18; 09.01.2017
comment
Но я хочу интегрировать эластичный поиск в свое приложение для рельсов. потому что это просто пример, у меня много данных, мне нужно искать эти данные с помощью elasticsearch - person Prajakta Dumbre; 09.01.2017