私はElasticSearchをカスタムインデックスと検索アナライザーで使用しています。 私はユーザーのデータを照会していますが、時には文字列にも同じオカレンスがあります。ElasticSearch analyzer:インデックス内の同じ語句を削除する方法はありますか?
例:「Hello World Hello Mr!」ここであなたは2回 "こんにちは"を見ることができます。
「Hello World」を検索している場合、「Hello World Hello Mr!」でより良いスコアを取得します。 "Hello World"よりも。論理的であっても、私はこの行動を望んでいません。
したがって、インデックス作成時に同じ単語を削除することは可能ですか?例:「Hello World Hello!」 => "Hello World Mr!"
私の現在のマッピングと設定:
settings index: { number_of_shards: 1, number_of_replicas: 1 }, analysis: {
analyzer: {
custom_analyzer: {
tokenizer: "custom_tokenizer",
filter: ["lowercase", "asciifolding", "custom_spliter"]
}
},
filter: {
custom_spliter: {
type: "word_delimiter",
preserve_original: "true"
}
},
tokenizer: {
custom_tokenizer: {
type: "nGram",
min_gram: "3",
max_gram: "3",
token_chars: [ "letter", "digit" ]
}
}
} do
mappings dynamic: 'false' do
indexes :searchable, analyzer: "custom_analyzer"
end
end
です-ことが可能それを行うには?
ちょうど完璧に動作します!ありがとう –