特定の用語の不在を肯定的に押し上げるにはどうすればよいですか?私はhereの前にこの質問をしましたが、十分に一般化することができなかったため、回答は満足できませんでした。弾性検索:特定の条件の不在を高める
ニュアンスを増やして、もう一度試してみましょう。
ラップトップと付属品を区別したいと思っています。人間の言葉では、これは用語の不在によって行われます。つまり、lenovo thinkpad
と言うときは、battery
という単語を省略すると、実際のラップトップが必要なことになります。人がlenovo thinkpad battery
と言っているときと比較すると、バッテリーの意味が分かります。マッピングと
PUT test_index
{
"settings": {
"index": {
"number_of_shards": 1,
"number_of_replicas": 1
}
}
}
:
PUT test_index/_mapping/merchant
{
"properties": {
"title": {
"type": "string"
},
"category": {
"type": "string",
"index": "not_analyzed"
}
}
}
がそれに二つのアイテムを入れる:
は、だから我々は、インデックスがあるとし
PUT test_index/merchant/3
{
"title": "macbook battery",
"category": "laptops accessories"
}
PUT test_index/merchant/2
{
"title": "lenovo thinkpad battery",
"category": "laptops accessories"
}
PUT test_index/merchant/1
{
"title": "lenovo thinkpad white/black",
"category": "laptops"
}
今すぐ検索をlenovo thinkpad
:
POST test_index/_search
{
"query":{
"match": { "title": "lenovo thinkpad" }
}
}
結果は次のとおり通知lenovo thinkpad battery
がlenovo thinkpad white/black
よりも起動していること
"hits": [
{
"_index": "test_index",
"_type": "merchant",
"_id": "2",
"_score": 0.70710677,
"_source": {
"title": "lenovo thinkpad battery",
"category": "laptops accessories"
}
},
{
"_index": "test_index",
"_type": "merchant",
"_id": "1",
"_score": 0.70710677,
"_source": {
"title": "lenovo thinkpad white/black",
"category": "laptops"
}
}
]
。
今、これを行うには少なくとも2つの合理的な方法があります。
A)title
の関連性に影響を与えるために、カテゴリごとの頻度を使用します。たとえば、カテゴリごとに95%パーセンタイルの単語を抽出すると、battery
は頻度が高いので、単語battery
はtitle
のすべてのクエリで負の値にする必要があります。
B)category
との関連性に影響を与えるために、カテゴリごとの頻度を使用します。たとえば、タイトルの一致に加えて、title
の一致に含まれていない95%パーセンタイルの条件を持つカテゴリの結果を自動的に否定的にブーストします。
AとBは全く同じではありませんが、どちらも関連性を考慮して特定の不在単語を考慮する必要があるという考えに基づいています。
だから......思考?
に設定ブーストプロパティでクエリの下に確認してください、私は、カテゴリ名だけでなく、タイトルに一致すると考えられてきたので、私はあなたが何かに上だと思います。しかし、私はあなたが説明したことを詳細に理解しているかどうかはわかりません。関連するクエリや関連するマッピングの変更をお願いしますか? :-) – oneloop
@Anugaの答えで述べたように私は増強を話していました。たぶん彼はちょうどブーストを高すぎる。 – Thunder