Elasticsearch
SpaceJam一个全文搜索的实例
TMDB数据库
数据导入
Use Case一查找Space Jam
Highlight -结果高亮
测试相关性一理解原理+多分析+多调整测试
- 技术分为道和术两种
- 道一 原理和原则
- 术一 具体的做法,具体的解法
- 关于搜索,为了有一个好的搜索结果。除了真正理解背后的原理,更需要多加实践与分析
- 单纯追求“术”,会一直很辛苦。只有掌握了本质和精髓之“道”,做事才能游刃有余
- 要做好搜索,除了理解原理,也需要坚持去分析一些不好的搜索结果。只有通过一定时间的积累,
才能真正有所感觉 - 总希望一个模型, 一个算法,就能毕其功于一役,是不现实的
监控并且理解用户行为
- 不要过度调试相关度
- 而要监控搜索结果,监控用户点击最顶端结果的频次
- 将搜索结果提高到极高水平,唯一途径就是
- 需要具有度 量用户行为的强大能力
- 可以在后台实现统计数据,比如,用户的查询和结果,有多少被点击了
- 哪些搜索, 没有返回结果
API
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"] }
}
}
}
知识点回顾
- 目标:用过一个具体案例,帮助你了解并巩固所学的知识点
- 使用Python脚本导入及查询数据/ Mapping设定
- Mapping 设定和分词器的选择至关重要
- 监控并理解用户行为/查询并调试相关度
- Boosting 查询字段/ Explain API/高亮显示
使用Search Template 和Index Alias
Search Template -解耦程序&搜索DSL
使用Search Template进行查询
Index Alias实现零停机运维
使用Alias创建不同查询的视图
API
POST _scripts/tmdb
{
"script": {
"lang": "mustache",
"source": {
"_source": [
"title","overview"
],
"size": 20,
"query": {
"multi_match": {
"query": "{{q}}",
"fields": ["title","overview"]
}
}
}
}
}
DELETE _scripts/tmdb
GET _scripts/tmdb
POST tmdb/_search/template
{
"id":"tmdb",
"params": {
"q": "basketball with cartoon aliens"
}
}
PUT movies-2019/_doc/1
{
"name":"the matrix",
"rating":5
}
PUT movies-2019/_doc/2
{
"name":"Speed",
"rating":3
}
POST _aliases
{
"actions": [
{
"add": {
"index": "movies-2019",
"alias": "movies-latest"
}
}
]
}
POST movies-latest/_search
{
"query": {
"match_all": {}
}
}
POST _aliases
{
"actions": [
{
"add": {
"index": "movies-2019",
"alias": "movies-lastest-highrate",
"filter": {
"range": {
"rating": {
"gte": 4
}
}
}
}
}
]
}
POST movies-lastest-highrate/_search
{
"query": {
"match_all": {}
}
}
知识点回顾
- Search Template的使用场景
- 如果通过 Mocha语法定义一个Search Template
- Index Alias的使用场景
- 如何创建 与使用Index Alias
- 通过Index Alias创建不同的查询视图