-1
我目前正在制定有針對性的廣告系統。 我跟蹤用戶的偏好,我應該相應地檢索廣告。使用elasticsearch I指數廣告,其中I指數廣告的標籤:根據用戶在彈性搜索中的偏好進行提升
捲曲-XPUT本地主機:9200 /廣告/廣告/ ad789 -d「{ 「標籤」: 「體育」, 「遊戲」] }」
現在,這裏是棘手的部分, 我想根據用戶的喜好 由2提高具有由8和遊戲標籤運動的廣告。
我目前正在制定有針對性的廣告系統。 我跟蹤用戶的偏好,我應該相應地檢索廣告。使用elasticsearch I指數廣告,其中I指數廣告的標籤:根據用戶在彈性搜索中的偏好進行提升
捲曲-XPUT本地主機:9200 /廣告/廣告/ ad789 -d「{ 「標籤」: 「體育」, 「遊戲」] }」
現在,這裏是棘手的部分, 我想根據用戶的喜好 由2提高具有由8和遊戲標籤運動的廣告。
您可以使用多個過濾器設置一個function_score
查詢,其中每個過濾器在匹配時都會提供不同的提升。例如,如果該查詢具有「運動」標籤,則該文檔分數乘以8,如果它包含「遊戲」標籤,則該分數乘以2。
{
"query": {
"function_score": {
"query": {
"match_all": {}
},
"functions": [
{
"filter": {
"term": {
"tags": "sports"
}
},
"boost_factor": 8
},
{
"filter": {
"term": {
"tags": "games"
}
},
"boost_factor": 2
}
]
}
}
}
默認情況下,提升值將與查詢得分相乘。或者,您可以使用參數boost_mode
僅使用函數分數(替換),將函數分數添加到查詢分數(總和),平均函數分數和查詢分數(平均值),或使用函數的最大/最小值分數或查詢分數(最大,最小)。
查看function_score documentation瞭解更多詳情。
你試過了什麼?我會看看[function_score查詢](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html)。 – javanna
它用於提高查詢檢索到的文檔,我需要的是提高查詢的多個部分與搜索「標籤」相同的屬性 –
當然,但您的文檔可能會匹配不同的查詢或過濾器嗎?您也可以將多個查詢組合在一起,併爲每個查詢分配一個不同的'boost',而不使用function_score。 – javanna