4

最近、Ruby on Rails で Elasticsearch を試しています。複数形のキーワードと複数形でないキーワードの両方でアイテムを検索できるように、データのインデックス作成に問題があります。

Tire では、マッピング属性ごとにアナライザーを割り当てることができます。

mapping do
  indexes title, analyzer: 'snowball'
  indexes body, analyzer: 'snowball'
end

ここで、「テスト」というタイトルにキーワードがあるとします。

クエリで属性を使用して検索を行う場合: http://localhost:9200/myindex/mymapping/_search?q=title:test 動作します。

ただし、次のように属性を指定せずに一般的な検索を行うと:
http://localhost:9200/myindex/mymapping/_search?q=test

ドキュメントが見つかりません。

検索する属性を指定する必要がないように、デフォルトのアナライザーを「スノーボール」にすることを指定するにはどうすればよいですか?

ps私はTire Gemを使用しています。ですので、その点を考慮したうえでの回答をお願いします。

4

2 に答える 2

10

インデックス設定を使用して、デフォルトのアナライザーを変更することができます。

require 'rubygems'
require 'tire'

Tire.index 'articles' do
  delete
  create :settings => {
      :index => {
        :analysis => {
          :analyzer => {
            :default => {
              :type => 'snowball'
            }
          }
        }
      }
    },
    :mappings => {
      :article => {
        :properties => {
          :title    => { :type => 'string', :analyzer => 'snowball'},
          :body     => { :type => 'string', :analyzer => 'snowball'}
        }
      }
    }

  store :title => 'Tests', :body => "Plural"
  store :title => 'Test', :body => "Singular"

  refresh
end
于 2012-03-12T16:23:58.737 に答える
3

これは、elasticsearch.yml 設定ファイルで設定するのが最も簡単です。

index.number_of_shards: 2
index.number_of_replicas: 0
index.analysis.analyzer.default.type: snowball
于 2013-07-25T19:51:00.910 に答える