当前播放: 30 | 多语言及中文分词与检索
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程目录
第一章:概述 (4讲)
01 | 课程介绍
免费
02 | 内容综述及学习建议
免费
03 | Elasticsearch简介及其发展历史
免费
04 | Elastic Stack家族成员及其应用场景
免费
第二章:安装上手 (4讲)
05 | Elasticsearch的安装与简单配置
免费
06 | Kibana的安装与界面快速浏览
07 | 在Docker容器中运行Elasticsearch Kibana和Cerebro
08 | Logstash安装与导入数据
第三章:Elasticsearch入门 (15讲)
09 | 基本概念:索引、文档和REST API
10 | 基本概念:节点、集群、分片及副本
11 | 文档的基本CRUD与批量操作
12 | 倒排索引介绍
13 | 通过Analyzer进行分词
14 | Search API概览
15 | URI Search详解
16 | Request Body与Query DSL简介
17 | Query String&Simple Query String查询
18 | Dynamic Mapping和常见字段类型
19 | 显式Mapping设置与常见参数介绍
20 | 多字段特性及Mapping中配置自定义Analyzer
21 | Index Template和Dynamic Template
22 | Elasticsearch聚合分析简介
23 | 第一部分总结
第四章:深入搜索 (13讲)
24 | 基于词项和基于全文的搜索
25 | 结构化搜索
26 | 搜索的相关性算分
27 | Query&Filtering与多字符串多字段查询
28 | 单字符串多字段查询:Dis Max Query
29 | 单字符串多字段查询:Multi Match
30 | 多语言及中文分词与检索
31 | Space Jam,一次全文搜索的实例
32 | 使用Search Template和Index Alias查询
33 | 综合排序:Function Score Query优化算分
34 | Term&Phrase Suggester
35 | 自动补全与基于上下文的提示
36 | 配置跨集群搜索
第五章:分布式特性及分布式搜索的机制 (8讲)
37 | 集群分布式模型及选主与脑裂问题
38 | 分片与集群的故障转移
39 | 文档分布式存储
40 | 分片及其生命周期
41 | 剖析分布式查询及相关性算分
42 | 排序及Doc Values&Fielddata
43 | 分页与遍历:From, Size, Search After & Scroll API
44 | 处理并发读写操作
第六章:深入聚合分析 (4讲)
45 | Bucket & Metric聚合分析及嵌套聚合
46 | Pipeline聚合分析
47 | 作用范围与排序
48 | 聚合分析的原理及精准度问题
第七章:数据建模 (7讲)
49 | 对象及Nested对象
50 | 文档的父子关系
51 | Update By Query & Reindex API
52 | Ingest Pipeline & Painless Script
53 | Elasticsearch数据建模实例
54 | Elasticsearch数据建模最佳实践
55 | 第二部分总结回顾
第八章:保护你的数据 (3讲)
56 | 集群身份认证与用户鉴权
57 | 集群内部安全通信
58 | 集群与外部间的安全通信
第九章:水平扩展Elasticsearch集群 (6讲)
59 | 常见的集群部署方式
60 | Hot & Warm架构与Shard Filtering
61 | 分片设计及管理
62 | 如何对集群进行容量规划
63 | 在私有云上管理Elasticsearch集群的一些方法
64 | 在公有云上管理与部署Elasticsearch集群
第十章:生产环境中的集群运维 (10讲)
65 | 生产环境常用配置与上线清单
66 | 监控Elasticsearch集群
67 | 诊断集群的潜在问题
68 | 解决集群Yellow与Red的问题
69 | 提升集群写性能
70 | 提升进群读性能
71 | 集群压力测试
72 | 段合并优化及注意事项
73 | 缓存及使用Breaker限制内存使用
74 | 一些运维的相关建议
第十一章:索引生命周期管理 (2讲)
75 | 使用Shrink与Rollover API有效管理时间序列索引
76 | 索引全生命周期管理及工具介绍
第十二章:用Logstash和Beats构建数据管道 (3讲)
77 | Logstash入门及架构介绍
78 | 利用JDBC插件导入数据到Elasticsearch
79 | Beats介绍
第十三章:用Kibana进行数据可视化分析 (4讲)
80 | 使用Index Pattern配置数据
81 | 使用Kibana Discover探索数据
82 | 基本可视化组件介绍
83 | 构建Dashboard
第十四章:探索X-Pack套件 (6讲)
84 | 用Monitoring和Alerting监控Elasticsearch集群
85 | 用APM进行程序性能监控
86 | 用机器学习实现时序数据的异常检测(上)
87 | 用机器学习实现时序数据的异常检测(下)
88 | 用ELK进行日志管理
89 | 用Canvas做数据演示
实战1:电影搜索服务 (3讲)
90 | 项目需求分析及架构设计
91 | 将电影数据导入Elasticsearch
92 | 搭建你的电影搜索服务
实战2:Stackoverflow用户调查问卷分析 (3讲)
93 | 需求分析及架构设计
94 | 数据Extract & Enrichment
95 | 构建Insights Dashboard
备战:Elastic认证 (5讲)
96 | Elastic认证介绍
97 | 考点梳理
98 | 集群数据备份
99 | 基于Java和Elasticseach构建应用
100 | 结束语
30 | 多语言及中文分词与检索

30 | 多语言及中文分词与检索

阮一鸣
eBay Pronto平台技术负责人
100讲 约1000分钟17027
单独订阅¥129
2人成团¥99
8
登录 后留言

精选留言(16)

  • wsstony
    您好,请教一下,对于多语言场景,最佳实践是怎么处理的?比如一个产品需要同时支持德语,法语,俄罗斯语,阿拉伯语等多种语言时,是如何选择分词器?如果建模的?

    作者回复: 方案1。 不同语言用不同索引,例如 orders-cn ,orders-en

    方案二:可以通过设置mulfi field 为期创建多个子字段,这个子字段可以使用不同的分词器。

    至于用户在搜索的时候使用什么语言,可以让用户指定,或者通过http header中的accept language来判定。

    至于你索引的数据,如果你明确知道他所用的语言,用方案一会很简单。否则你需要使用一个学习算法对文档的语言进行归类。有一些现成的库可以使用,例如

    chromiu-compact-language-detector ,基于google的CLD开发,支持160多种语言的detect

    2019-09-08
    2
  • 氧气🌙 🐟 🌺
    代码段一:
    POST address/_search
    {
      "query": {
        "multi_match": {
          "query": "Poland Street W1V",
          "type": "most_fields",
          //"operator": "and",
          "fields": ["street", "city", "country", "postcode"]
        }
      }
    }
    算分:"_score" : 0.8630463,

    代码段二:
    POST address/_search
    {
      "query": {
        "multi_match": {
          "query": "Poland Street W1V",
          "type": "cross_fields",
          "operator": "and",
          "fields": ["street", "city", "country", "postcode"]
        }
      }
    }
    算分:"_score" : 0.8630463,

    代码段三:
    POST address/_search
    {
      "query": {
        "multi_match": {
          "query": "Poland Street W1V",
          "type": "cross_fields",
          "operator": "or",
          "fields": ["street", "city", "country", "postcode"]
        }
      }
    }
    算分:"_score" : 0.8630463,

    问题一:代码段一和二的结果算分一样。用most_fields不加operator也能查到,为何还要用cross_fields?
    问题二:代码段二和三的operator不同,算分也一样,这里的operator起什么作用呢?
    2019-08-01
    2
  • zj
    如果老师能讲一下类似淘宝直通车案例就好啦,或者老师这方面系统有没有推荐的技术文章可以推荐我们看一下哈

    作者回复: 具体是指哪方面的需求?

    2019-07-26
    2
    1
  • 我来也
    这篇文章来的非常及时!
    正好在做一个搜索功能,需要中文加拼音混合搜索。
    之前已经用了ik+pinyin分词,词可以分出来了,

    作者回复: 👍

    2019-07-26
    1
  • 刘志
    老师能否给出在docker容器里(运行着ES/Kibana)安装那些分词器插件的命令?

    作者回复: 第一种方式,需要写Dockerfile,然后去build出你特定的image。你查一下如何写docker image,然后只需要吧插件安装那行命令写进dockerfile即可

    第二种,运行后attach到container中,执行plugin 安装的命令,但是container销毁后,需要重做

    2019-07-24
    5
    1
  • 老司机小小阿姨
    老师,Elasticsearch同时用ik和Elasticsearch会影响性能吗?正常情况,会混合一起使用吗

    作者回复: 有中文分词的需求 可以一起使用啊。担心性能 可以做一个性能测试,看看是否满足你的实际负载

    2019-09-24
  • godtrue
    多语言尤其是中文分词确实复杂,幸好有了,这么多强大的插件。还记得自己之前做过的一个需求通过拼音也能搜索的功能,基于数据库搞的生僻字多音字很麻烦,几乎无法处理?不知道针对多音字这些分词器怎么转化?
    2019-09-20
  • 抱团团长
    我在docker中上传了添加ik、pinyin、hanlp三种分词器的elasticsearch镜像。只需要在docker-compose.yaml文件中修改elasticsearch的配置:image: pengliwds/elasticsearch-analysis:7.1.0

    作者回复: 赞👍

    2019-09-09
  • Cybertrunk
    ES两点很不爽,安了插件居然要重启ES。太逊了!
    第二个,一共3个节点,我先把master节点干掉,留两个master eligible节点,期望其中一个能选为新的master,不幸的是好像整个ES集群就停掉不干活了。我还说靠这种办法来,达到不间断服务呢。

    作者回复: 第一个确实如此。需要rolling restart。
    第二个应该不会这样。

    2019-08-29
    1
  • 红发-;
    老师,请教一下,plugin离线安装,install只能是二进制文件吧?自己编写Dockerfile,使用下载的zip文件是不是解压后还要自行配置对应插件的配置文件

    作者回复: 1. install 必须提供zip文件
    2. 如果安装后需要修改相应目录下的文件,你需要通过在dockerfile中写shell脚本去执行这一些列的操作

    2019-08-27
  • John
    這幾個分詞器很重要 講的非常好
    2019-08-24
  • Geek_Dream
    你好,阮老师,我再执行
    PUT /my_index
    {
      "mappings": {
        "blog": {
          "properties": {
            "title": {
              "type": "string",
              "analyzer": "english"
            }
          }
        }
      }
    }
    这条语句的时候,有报错信息如下:
    {
      "error": {
        "root_cause": [
          {
            "type": "mapper_parsing_exception",
            "reason": "Root mapping definition has unsupported parameters: [blog : {properties={title={analyzer=english, type=string}}}]"
          }
        ],
        "type": "mapper_parsing_exception",
        "reason": "Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters: [blog : {properties={title={analyzer=english, type=string}}}]",
        "caused_by": {
          "type": "mapper_parsing_exception",
          "reason": "Root mapping definition has unsupported parameters: [blog : {properties={title={analyzer=english, type=string}}}]"
        }
      },
      "status": 400
    }
    请问如何解决,麻烦有时间看到我的留言提供一下思路,谢谢
    2019-08-23
  • 郭刚
    老师,elasticsearch-analysis-pinyin-7.3.0.zip的版本如何下载?

    作者回复: 找到github,点开release,提过没有就需要等一下。有些插件需要一定时间才能跟上最新的版本

    2019-08-13
  • 我来也
    老师,最近遇到一个奇怪的现象,在单机中安装了jieba插件,ik分词插件,pinyin分词插件,其中jieba插件未使用,但是es访问就很慢,本机用curl查询健康状况都慢。
    把jieba分词插件删除后,就恢复了正常。
    本机是用的docker中的es。测试时重置了docker,还是很慢。(之前一段时间有这个插件也相安无事)

    比较好奇,未使用的插件也会对es产生影响么?(看docker logs日志时会有jieba相关的日志。)
    es和插件版本都是6.2的。

    作者回复: 你可以把相关的问题提到jieba的github上。按照道理你index和search都没有使用,应该不会有什么开销。分词一般会对cpu有开销,你的es慢,你看是cpu消耗大还是有内存方面的gc?

    2019-08-09
    1
  • 杰锅不是锅
    老师,一直有个疑问,用了分词的索引字段,elastic 会自动把分词存到索引里面吗?原理是什么?可能我表达不怎么准确。

    作者回复: 数据写入的时候,就会按照字段进行分词并且存入倒排表里

    2019-07-31
  • 超威丶
    老师,目前使用IK分词器,出现一个问题:
    首先这是mapping定义:
    PUT test_index
    {
      "mappings": {
        "doc": {
          "properties": {
            "name":{
              "type": "text",
              "analyzer": "ik_max_word", //"ik_max_word",
              "search_analyzer": "ik_smart"
            }
          }
          
        }
        
      }
      
    }

    然后推入数据:
    PUT /test_index/doc/1
    {
        "name": "张三"
    }

    PUT /test_index/doc/2
    {
        "name": "张三丰"
    }

    PUT /test_index/doc/3
    {
        "name": "张三丰feng"
    }

    PUT /test_index/doc/4
    {
        "name": "张"
    }

    PUT /test_index/doc/5
    {
        "name": "三"
    }

    此时我去查询结果,发现排在最前面的不是“三”这条数据,而是“张三丰”这条数据,感觉很疑惑
    POST /test_index/_search
    {
      "explain": true,
        "query": {
          "term": {
            "name": {
              "value": "三"
            }
          }
        }
    }

    作者回复: 这不能吧?肯定是

    张三
    张三丰
    张三丰feng

    的排列。我还测试了一下,没有错的

    2019-07-28
    1
收起评论
看过的人还看
Kafka核心技术与实战

胡夕  人人贷计算平台部总监,Apache Kafka Contributor

46讲 | 8616 人已学习

拼团 ¥79 原价 ¥99
从0开始学架构

李运华  资深技术专家

59讲 | 39296 人已学习

¥99
趣谈网络协议

刘超  网易研究院云计算技术部首席架构师

51讲 | 40145 人已学习

拼团 ¥79 原价 ¥99
MySQL实战45讲

林晓斌  网名丁奇,前阿里资深技术专家

48讲 | 44282 人已学习

拼团 ¥79 原价 ¥99