分词器使用时机|学习笔记

简介: 快速学习分词器使用时机

开发者学堂课程【Lucene 知识精讲与实战(上) 分词器使用时机】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/700/detail/12338


分词器使用时机


内容介绍

一、简介

二、分词器使用时机

 

一、简介

分词器在索引以及搜索的过程中都会使用到。原因是首先在索引的时候,会把这个数据也就是说文档里边的正文内容给提取出来,文档当中是域,把域中的域值提取出来,也就是说是一句一句话,提取出来后,要利用分词器给切分成一个词,切分成这个词之后会把做成云目录,这就是分词器在索引中的作用。搜索的时候,会把搜索的关键词,或者是说关键字,或者是句子再使用分词词器进行切分,切出来也是一个词,里用这个词和索引里这个词这里就进行对比,找到一样的找出来之后,通过索引找文档是这样一个过程。

首先分词器起到一个分词的作用,也就是说把一句一句话拆分成一个词,在拆分成一个词的过程当中,会去掉标点符号,去掉空格,所有的大写字母转成小写字母,大写字母在 luncen 中是作为关键字使用的,作为查询语法使用,

所有其他业务上的英文单词都会由大写字母变成小写字母来进行区分,里还要去掉停用词,比如中文的感叹词、连词、冠词等等,把这些都去掉,因为这些词你查出来没有意义。像英文的词也都要去掉,也是查出来没有什么意义。把这些词去掉了之后,并且把切出来的词组成索引,组成索引过程中会去掉重复的词。重复的词没有用,查的时候白白浪费性能,去掉了重复的词,就可以去掉大部分的内容。剩下来的索引,即目录会非常小,因为词汇量是有限的,一本辞海、一本字典,一本牛津词典,量肯定就不够用了。所有的文章海量数据都是用这些词来进行组成的。


二、分词器使用时机

1.索引时使用 Analyzer

输入关键字进行搜索,当需要让该关键字与文档域内容所包含的词进行匹配时需要对文档域内容进行分析,需要经过 Analyzer 分析器处理生成语汇单元(Token)。分析器分析的对象是文档中的 Field 域。当 Field 的属性 tokenized(是否分词)为true时会对 Field 值进行分析,如下图:

image.png

一个文档,文档当中放的是正文内容,也就是文档中放的是域,域里面有域名和域值,文档中的内容要放到索引库,组成索引,不管是文档对象还是在索引的对象都要放到索引库,也就是之前创建的 Dir。放进去之前这里要进行组成索引,就要进行切分词。也有可能不进行切分词。名称、搜索的内容就要创建索引,创建索引的时候,如果切分之后有意义,比如说名称,比如说描述,这些字段就会进行切分词。切分词的时候使用的分词器不同,切分词的效果也不同,luncen自带的很多分词器,还有一些第三方分词器供选择。总的来说们都叫分词器,即 analyze。域经过分词器进行切分,进行更新索引库。当然像比如说一个业务的组件 ID,这里不需要切分词,还有身份证号、订单号等等。这些唯一、整体的东西不进行切分词,就不用进行切分词,里直接更新到索引库,把这些切分好后的这个词或者说不切分的词组成索引。

文档对象也要放到索引库当中,这个是在索引的时候分词器的作用。输入关键字进行搜索。 创建索引内容,相当于一个目录一样,

对于一些 Field 可以不用分析:

1、不作为查询条件的内容,比如文件路径

2、不是匹配内容中的词而匹配Field的整体内容,比如订单号、身份证号等。

2.搜索时使用 Analyzer

对搜索关键字进行分析和索引分析一样,使用 Analvzer 对搜索关键字进行分析、分词处理,使用分析后每个词语进行搜索。比如:搜索关键字:spring web,经过分析器进行分词,得出:spring web 拿词去索引词典表查找,找到索引链接到 Document,解析 Document 内容。

对于匹配整体 Field 域的查询可以在搜索时不分析,比如根据订单号,自份证号查询等。

注意:搜索使用的分析器要和索引使用的分析器一致。

再来在文档搜索时,也要使用 analyze 分词器进行分词,并且注意在创建索引的时候使用的是什么分词器,在搜索的时候就需要使用什么样的分词器。也就是说创建的时候使用的是标准分器切分词,在搜索的时候也要使用标准分词器进行切分词,原因切分词的效果是一模一样的。

假如在页面上在百度上输入这三个字点击搜索,如果要是用别的分词器,带语义分析功能了,进行切分词可能切分出来的效果是关键是一个词,词是一个词,逐行逐字对比,会发现对比不等,一个都找不出来。查询结果就是空的

虽然索引当中有关键字这么几个词,但是由于分词效果不一样,到时候会导致查询结果查不出来内容,或者是查询出来的内容不准确,所以创建的时候用什么分词器,搜索的时候对于关键字分词的时候也要使用什么分词器。

不分词把当成一个整体关键字,去索引库搜索,不能对比,找不到文档查询结果,最后是为空的。

如果说他要是使用标准分词器使用的是一模一样的。

这就是使用分词器的的时机,不管是搜索的时候,还是这个查询输入关键字的时候,都要使用分词器,并且创建索引的时候跟你搜索的时候使用的分词器要一致的,如果说不一致,有可能会导致查询不出来想要的东西,甚至查出来的结果不准确。

 

相关文章
|
23天前
|
JavaScript 前端开发 Java
ChatGPT与代码扫描
ChatGPT与代码扫描,感觉英文回答比中文好
21 5
|
3月前
|
API 索引
面试题ES问题之使用分词器提高写入效率如何解决
面试题ES问题之使用分词器提高写入效率如何解决
26 1
|
2月前
|
存储 搜索推荐 测试技术
LangChain 构建问题之Retrievers(检索器)的定义如何解决
LangChain 构建问题之Retrievers(检索器)的定义如何解决
41 0
|
4月前
|
机器学习/深度学习 自然语言处理 算法
必知的技术知识:IK分词器实现原理剖析——一个小问题引发的思考
必知的技术知识:IK分词器实现原理剖析——一个小问题引发的思考
84 0
|
前端开发
前端学习笔记202303学习笔记第五天-使用全局过滤器过滤时间
前端学习笔记202303学习笔记第五天-使用全局过滤器过滤时间
48 0
|
自然语言处理 Java 开发者
原生分词器(StandardAnalzyer)|学习笔记
快速学习原生分词器(StandardAnalzyer)
212 0
原生分词器(StandardAnalzyer)|学习笔记
|
存储 数据采集 自然语言处理
lucene 索引流程详细分析|学习笔记
快速学习 lucene 索引流程详细分析
140 0
lucene 索引流程详细分析|学习笔记
|
缓存 关系型数据库 开发者
并行过滤器|学习笔记
快速学习并行过滤器。
并行过滤器|学习笔记
|
缓存 关系型数据库 开发者
并行过滤器 | 学习笔记
快速学习并行过滤器
并行过滤器 | 学习笔记
|
自然语言处理 运维 应用服务中间件
别只会搜日志了,求你懂点检索原理吧(六)之中文分词
别只会搜日志了,求你懂点检索原理吧(四)之中文分词
265 0
别只会搜日志了,求你懂点检索原理吧(六)之中文分词