0

Railsアプリで単語を検索するためにelasticsearch-railsとelasticsearch-model gemを使用しています。

これが、実行するために検索したい私のモデルです

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

私の質問は、どのように単語を検索するのですか? Tシャツ、Tシャツ、Tシャツはすべて一致する必要があります。さらなる研究のためのリンクも役に立ちます。ありがとうございました

4

1 に答える 1