美文网首页
4.8-SpaceJam一个全文搜索的实例

4.8-SpaceJam一个全文搜索的实例

作者: 落日彼岸 | 来源:发表于2020-04-02 21:15 被阅读0次

    ⽬的

    • ⽬标:⽤过⼀个具体案例,帮助你了解并巩固所学的知识点

      • 写⼊数据 / 设置 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"] }
    
            }
        }
    }
    

    相关

    相关文章

      网友评论

          本文标题:4.8-SpaceJam一个全文搜索的实例

          本文链接:https://www.haomeiwen.com/subject/xamfphtx.html