3

元のテキスト「Joe Frankle's」と一致するように、「Joe Frankles」、「Joe Frankle」、「Joe Frankle's」のユーザー送信クエリを取得しようとしています。現在、このテキストが含まれるフィールドのインデックスを作成しています (Tire / Ruby Format):

{ :type => 'string', :analyzer => 'snowball' }

および検索:

query { string downcased_query, :default_operator => 'AND' }

これを試してみましたが失敗しました:

          create :settings => {
              :analysis => {
                :char_filter => {
                   :remove_accents => {
                     :type => "mapping",
                     :mappings => ["`=>", "'=>"]
                   }
                },
                :analyzer => {
                  :myanalyzer => {
                    :type => 'custom',
                    :tokenizer => 'standard',
                    :char_filter => ['remove_accents'],
                    :filter => ['standard', 'lowercase', 'stop', 'snowball', 'ngram']
                  }
                },
                :default => {
                  :type => 'myanalyzer'
                }
            }
          },
4

3 に答える 3

1

同様の問題に遭遇しました。スノーボールアナライザーだけでは機能しませんでした。それが想定されているかどうかはわかりません。これが私が使用するものです:

properties: {
  name: {
    boost: 10,
    type:  'multi_field',
    fields: {
      name:      { type: 'string', index: 'analyzed', analyzer: 'title_analyzer' },
      untouched: { type: 'string', index: 'not_analyzed' }
    }
  }
}

analysis: {
  char_filter: {
    remove_accents: {
      type: "mapping",
      mappings: ["`=>", "'=>"]
    }
  },
  filter: {},
  analyzer: {
    title_analyzer: {
      type: 'custom',
      tokenizer: 'standard',
      char_filter: ['remove_accents'],
    }
  }
}

管理インデックス分析ツールは、アナライザーを使用する場合にも最適です。

于 2013-04-25T18:09:13.073 に答える
0

クエリではフィールドを検索しているように見えます_allが、アナライザーは個々のフィールドにのみ適用されます。フィールドでこの機能を有効にするには_all、単純に Snowball をデフォルトのアナライザーにします

于 2013-04-25T12:45:06.743 に答える