借这个项目正好系统学习 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 交替最小二乘法