⽬的
-
⽬标:⽤过⼀个具体案例,帮助你了解并巩固所学的知识点
-
写⼊数据 / 设置 Mapping,设置 Analysis
-
查询并⾼亮显示结果
-
分析查询结果,通过修改配置和查询,优化搜索的相关性
-
-
分析问题,结合原理,分析思考并加以实践
TMDB 数据库
TMDB-
创建于 2008 年,电影的 Meta Data 库
-
46 万本电影 / 12万本电视剧 / 230万张图 ⽚ / 每周 20万次编辑
-
提供 API。总共有超过20万开发⼈员和公司 在使⽤
数据导⼊
data-
数据特征 – 标题信息较短 / 概述相对较⻓
-
通过 TDMB Search API
-
将查询数据保存在本地 CSV ⽂件中
-
使⽤ Python 导⼊及查询数据
-
索引的主分⽚数设置为 1,使⽤默认 Dynamic Mapping
Use Case – 查找 Space Jam
空中⼤灌篮-
空中⼤灌篮 (Space JAM)
-
华纳公司动画明星 / 篮球巨星乔丹 / 外星⼩怪物
-
案例:⽤户不记得电影名,⽽希望通过⼀些关键字,搜索到电影 的详细信息
-
搜索关键字:“Basketball with Cartoon Aliens”
Space Jam,一次全文搜索的实例
-
环境要求
-
Python 2.7.15
-
可以使用pyenv管理多个python版本(可选)
-
-
进入 tmdb-search目录
DEMO 操作流程
# 导入数据[0]
python ingest_tmdb_from_file.py
# 查询结果[0]
python query_tmdb.py
# 导入数据[1]
python ingest_tmdb_from_file.py
# 查询结果[1]
python query_tmdb.py
# 查询结果高亮(highlight),查询命中状况[1]
python query_tmdb.py hl
Highlight - 结果⾼亮
POST tmdb/_search
{
"_source": ["title","overview"],
"query": {
"multi_match": {
"query": "basketball with cartoon aliens",
"fields": ["title","overview"]
}
},
"highlight" : {
"fields" : {
"overview" : { "pre_tags" : ["\\033[0;32;40m"], "post_tags" : ["\\033[0m"] },
"title" : { "pre_tags" : ["\\033[0;32;40m"], "post_tags" : ["\\033[0m"] }
}
}
}
思考与分析
-
“精确值” 还是 “全⽂”?
-
搜索是怎么样的?不同的字段需要配置怎么样的分词器
-
测试不同的的选项
-
分词期 / 多字段属性 / 是否要 g-grams / what are some critical synonyms / 为字段设置不同的权重
-
测试不同的选项,测试不同的搜索条件
Demo
-
查看 csv ⽂件中的电影源数据
-
使⽤默认 Dynamic Mapping,⽤ Python 导⼊数据
-
查看搜索结果和相关性算分 / 对搜索结果⾼亮显示
-
使⽤英⽂分词器 / 为查询语句设置不同的 Boosting / 增加⼦多字段
测试相关性 – 理解原理 + 多分析 + 多调整测试
-
技术分为道和术两种
-
道 – 原理和原则
-
术 – 具体的做法,具体的解法
-
关于搜索,为了有⼀个好的搜索结果。除了真正理解背后的原理,更需要多加实践与分析
-
单纯追求“术”,会⼀直很⾟苦。只有掌握了本质和精髓之“道”,做事才能游刃有余
-
要做好搜索,除了理解原理,也需要坚持去分析⼀些不好的搜索结果。只有通过⼀定时间的积累, 才能真正有所感觉
-
总希望⼀个模型,⼀个算法,就能毕其功于⼀役,是不现实的
监控并且理解⽤户⾏为
-
不要过度调试相关度
-
⽽要监控搜索结果,监控⽤户点击最顶端结果的频次
-
将搜索结果提⾼到极⾼⽔平,唯⼀途径就是
-
需要具有度量⽤户⾏为的强⼤能⼒
-
可以在后台实现统计数据,⽐如,⽤户的查询和结果,有多少被点击了
-
哪些搜索,没有返回结果
本节知识点回顾
-
⽬标:⽤过⼀个具体案例,帮助你了解并巩固所学的知识点
-
使⽤ Python 脚本导⼊及查询数据 / Mapping 设定
-
Mapping 设定和分词器的选择⾄关重要
-
监控并理解⽤户⾏为 / 查询并调试相关度
-
Boosting 查询字段 / Explain API / ⾼亮显示
课程demo
POST tmdb/_search
{
"_source": ["title","overview"],
"query": {
"match_all": {}
}
}
POST tmdb/_search
{
"_source": ["title","overview"],
"query": {
"multi_match": {
"query": "basketball with cartoon aliens",
"fields": ["title","overview"]
}
},
"highlight" : {
"fields" : {
"overview" : { "pre_tags" : ["\\033[0;32;40m"], "post_tags" : ["\\033[0m"] },
"title" : { "pre_tags" : ["\\033[0;32;40m"], "post_tags" : ["\\033[0m"] }
}
}
}
相关
- Windows 安装 pyenv https://github.com/pyenv-win/pyenv-win
- Mac 安装pyenv https://segmentfault.com/a/1190000017403221
- Linux 安装 pyenv https://blog.csdn.net/GX_1_11_real/article/details/80237064
- Python.org https://www.python.org/
网友评论