あいまい一致の目的で、地理的領域の階層データをelasticsearchに保存しようとしています。
例
米国 -> カリフォルニア州 -> サンタクララ郡 -> パロアルト -> パロアルト セント
現在、次のように、名前とパスを使用して、すべてをフラットな構造に保存しています。
{
"name" : "Palo Alto St.",
"path" : [
"USA",
"California",
"Santa Clara County",
"Palo Alto"
]
}
「パロアルト」が似てる
{
"name" : "Palo Alto",
"path" : [
"USA",
"California",
"Santa Clara County"
]
}
次に、次のように fuzzy_like_this クエリを実行します。
{
"query": {
"fuzzy_like_this": {
"like_text": "palo alto",
"fields": [
"name",
"path"
],
"min_similarity": 0.9,
"prefix_length": 2
}
}
}
残念ながら、これは、たとえば、ツリー内で最も深い結果のスコアを上げたい場合にはうまく機能しないようです。
親子関係など、これを行う標準的な方法はありますか? 少し掘り下げましたが、任意の長さの階層データについては言及されていません。
カスタム スコア クエリを少しいじってみましたが、この目的には十分な柔軟性がないように見えます。または、私の理解が少し表面的すぎるかもしれません。
読んでくれてありがとう