借這個項目正好系統學習 ES 與 推薦算法
需求分析
整體架構
落地實現
ES 的學習
- match 與 term 的區別
- match 是進行分詞后的 每個詞匹配的 or
- term 是不進行分詞的 整詞精確匹配, 這一點跟 keyword 很像
GET /movie/_search
{
"query":{
"match":{"title":"steve"}
}
}
GET /movie/_search
{
"query":{
"term":{"title":"steve"}
}
}
GET /movie/_analyze
{
"analyzer": "english",
"field":"title",
"text":"Frank Li"
}
analyzer:english / standard =》 默認標准分詞解析器只是根據標點符號進行分詞, english 可以去掉停用詞 with of 這些,並小寫
// or 可以改為 and
GET /movie/_search
{
"query":{
"match":{
"title":{
"query":"basketball good solution available alien",
"operator": "or"
}
}
}
}
// 最少匹配分詞后兩個
GET /movie/_search
{
"query":{
"match":{
"title":{
"query":"basketball with good boy alien",
"operator": "or",
"minimum_should_match": 2
}
}
}
}
GET /movie/_search
{
"query": {
"multi_match": {
"query": "good boy man love basketball bad news",
"fields": ["title", "overview"]
}
}
}
極其重要的 TF 詞頻 - IDF 逆文檔頻率+ TF NORM 詞頻歸一化
推薦系統

ALS => alternating least squares 交替最小二乘法