我正在使用带有自定义索引和搜索分析器的ElasticSearch。 我正在查询用户数据,有时候,字符串中也会出现相同的情况。
示例:“你好世界你好先生!”在那里你可以看到2次“你好”。
如果我正在寻找“Hello World”,我会在“Hello World Hello Mr!”中获得更高的分数。比“Hello World”。我不希望这种行为,即使它是合乎逻辑的。
那么,索引时是否可以删除相同的单词?示例:“Hello World Hello Mr!” => “Hello World先生!”
我当前的地图和设置:
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
是否可以这样做?