私はElasticsearchを使用して簡単な検索を実装しようとしています。Elasticsearch:用語が存在しない場合の正のブースト
私が抱えている問題の1つは、検索クエリに用語が暗示されていることが多いことです。たとえば、誰かが「lenovo thinkpad battery」を入力すると、バッテリーが必要だと考えてください。しかし、誰かが "lenovo thinkpad"だけを入力した場合、その用語はクエリには表示されませんが、ラップトップが必要です。
私の解決方法は次のとおりです。関連する用語を手作業でまとめます。たとえば、コンピュータ/ラップトップのカテゴリでは、「バッテリー」、「キーボード」、「電源コード」、「アダプタ」、「ケーブル」、「保護計画」などの用語を使用できます。検索クエリ、私はこれらの用語を含まないすべての結果を肯定的に高める。
これはElasticsearchで可能ですか?
EDIT:
例文書
{"_source": { "item_title": "lenovo thinkpad white/black" },
"_source": { "item_title": "lenovo thinkpad battery" }
}
マッピング
{
"properties": {
"item_title": {
"type": "string"
}
}
}
クエリ
POST my_index/my_type/_search
{
"from": 0,
"size": 10,
"query": {
"match": {
"item_title": "lenovo thinkpad"
}
}
}
クエリ結果:
"hits": {
"total": 2,
"max_score": 0.2169777,
"hits": [
{
"_index": "my_index",
"_type": "my_type",
"_id": "2",
"_score": 0.2169777,
"_source": {
"item_title": "lenovo thinkpad battery"
}
},
{
"_index": "my_index",
"_type": "my_type",
"_id": "1",
"_score": 0.2169777,
"_source": {
"item_title": "lenovo thinkpad black/white"
}
}
]
}
この2つの結果のスコアは同じであることに注意してください。しかし、「lenovo thinkpad」というクエリには、「バッテリー」のような手動で選択した特別な用語が含まれていないため、その用語が含まれていない文書を積極的に追加して、 "item_title": "lenovo thinkpad white/black"はクエリ結果のスコアが高いはずです。
問題をより効果的に理解するための照会とマッピングの追加を検討してください。 – user3775217
@ user3775217 done – oneloop