00:00
讲一下文档分析,那所谓的文档分析啊,其实包含几个过程,第一个将我们的文本呢进行分词,分解成适合于倒排索引的独立的词条,还有将我们的词条统一化为标准的格式,用于提高他们的查询匹配度,对不对?那么这些工作呀,是由分析器来完成的,而分析器呢,它包含了三个主要的功能,第一个叫字符过滤器,这个字符过滤器呢,它其实就是将字符串的每个字符呢进行匹配过滤,将一些我们特殊的内容呢做一些转换。还有叫分词器,那么这个分词器呢,可以将我们的字符串按照某个特定的分词规则进行分词,那比方说什么空格啊,逗号啊,这样的一些我们的语法规则,它可以进行分词,对吧?那还有一个叫token过滤器,这个token过滤器呢,可以经过我们的数据操作之后呢,将我们的数据转换成特定的要求和特定的格式,比方说把那些我们特殊的一些词语呢,给它删除掉,或者呢,把大小写给它变换一下,这都是有可能的啊,所以这是我们的一些功能。
01:04
那么好,我们的这个ES软件啊,它内置的一些分析器,就是你不用写,它本身就有,那么这里呢,大家可以看到有一个叫标准分析器,还有一个叫简单分析器,还有一个叫空格和语言分析器,那么其实从字面上还是比较好理解的,什么空格啊,我们语言呢,那语言的叫什么中文呢,英文之类的,对不对?那么我们的这个分析器啊,使用的场景呢,其实就是在我们做全文检索的时候,把我们的文本给它进行拆解,拆解之后呢,把它放到我们倒排索引当中,进行我们匹配查询,但是你要记住了,我们存储的时候是如何被分词的,那么我们查询的时候也应该是做相同的操作。否则你的查询是有问题的啊,接下来我们对一些我们的文本呢,进行一些分析器的简单测试啊,那么首先我们这里大家可以看到用它内置的分析器是可以的,有一个叫标准分析器,那现在呢,我们把服务器打开之后呢,打开客户端点击,点击完成以后把咱们地址拷贝过来。
02:04
于是内置的呀,你就不用加任何的索引了,但是请求的内容你需要添加拷贝,拷贝之后呢,我们body,然后RA选择它我们的先好了,然后点击send,点击之后你会发现它会将我们的文本呢进行我们的分解,分解之后形成了text,诶这第一个第二个叫to,第三个我们叫分析,那么这里的token呢,就是我们分解后的词条,然后呢,这边有个叫start,有个叫end,叫outside,叫偏移量,还有一个我们的什么predict叫做位置,对吧,有这样的一些内容啊,所以这就是一个最基本的分词效果啊,那么这里咱们也进行了说明,咱们接着往下。往下以后呢,他说了,我们还可以通过指定的分析器对于我们的数据进行分析,这也是完全可以的,比方说呀,我们可以采用一个叫IK分词器,这个其实就是一个中文分词器了,咱们先看一看啊,首先我们先来做分词的话,大家可以看到我们这里呢,首先拷贝我们测试一个中文。
03:01
背一下。宝贝完成以后,把这个呢,我们去掉,去掉以后呢,我们重新点击散填,点击以后你会发现它对中文的这个,嗯,分词效果呢,就是每个汉字,它就是一个我们的什么词条头Ken,哎就这个意思,所以它叫测啊是单词就是这样,但这个明显呢,不是符合我们的逻辑的,我们一般测试单词他们应该是个整体,它是个整体对吗?哎,这个是我们比较常见的分析,所以我们一般真就不会把它一个一个汉字给它独立的去查询,对不对,哎就是这样啊,那这个我们该怎么做呢?哎,记住中文的分词呢,咱们有一个专门的分词器,所以呢,我们准备呢,给大家去看一看来,那么我们这里采用一个叫IK的中文分值器,我们有个下载的地址,在咱们的资料当中,其中就有一个我们IK的分值器,你把它解压缩以后,里面会有很多的内容,你要把它作为我们ES软件的插件给它来使用,所以把服务器先关掉。
04:03
然后呢,把这个解压缩之后的目录呢,给它剪切到我们的。ES当中就可以了啊,来打开咱们复制一下是点开开开以后这边有个叫ins,你打开打开以后里面是空的,你复制进去。复制进去以后,然后呢,你给他重新启动。重新启动ES,那么这个时候呢,我们在重新做这个分值效果,你来看一看,那么这个大家可以看到,我们会在下面呢,指定咱们的分区器,那咱们用的就是IK啊。好了,我们这边应该已经启动完了,我们试一试啊来咱们试一试,首先我们就来把刚才的内容拷贝一下。宝贝完成以后在我们的这个地方呢,来做S,我们的测试单词是采用的方式有点变化了,所以我们来点击扇的点,点击完成以后,大家会明显的发现有了区别了,咱们这个词条啊叫做测试,这个叫单值,这个就比较合理了,为什么呢?因为在我们中文当中,我们一般情况下,这个测试是整体单词是个整体,对不对,诶就是这样啊。
05:08
好了,那么这个地方呢,还有一个分词效果呀,大家可以看到我们这个有个叫I k max word,它是最细力度的拆分,就意味着分解成最多的那个单词词组,就是这个意思,而这个叫smart呢,是一种快速的操作,那么它会最粗力度的拆分,这个其实我们可以看看啊,咱们拷贝一下,拷贝拷贝以后呢,放过来,然后呢,我们去查一下啊。安完以后呢,你会发现跟这个差不多,它是一样的,对不对,那现在呢,我们再写点东西吧,比方说我们写上啊,咱们叫做什么呢?咱们叫中国人好了,写完之后,哎,我们现在呢,给他点击投入,点击以后同们看怎么了。中国人嘛,对不对,好,我们换一换,把它换成我们的,它来拷贝,拷贝以后呢,放到这边来,然后呢,回车,回车以后,诶不对,写错地方了,咱们写错地方了,嗯,咱们写在这个位置啊好那点一下。
06:03
点完以后大家看一下还诶有没有发现我们中国人是个整体,我们的中国,我们的国人你看都有了吧,诶就是这样,你再给他变回去,来回去我们再点击扇的,点击扇的以后,大家看是不是只有这一个明显呢,他们的这个分值的这个力度是不一样的啊,这个比较粗,刚才那个比较细,它的那个分值会更多一些,行了,这个呢,咱们说一下就可以了啊,然后呢,他说了我们ES当中啊也允许呢,自己来扩展词汇。这什么意思呢?因为以某些我们的这些文字呀,我们的分词器当中是不可能知道它是一个关键字,是个整体的,他不知道,所以在这种情况下,我们需要干嘛呢?我们需要自己来告诉你,我们这是个整体,不能进行拆分啊,有这么个含义,所以呢,我们现在来看啊,它这里面就说了,我们有一个我们的文字,咱们拷贝一下,拷贝之后大家看一下,比方说这是一个特定的名词,那么这个时候呢,我们点一下点。
07:00
改完以后是你知道它是一个名词,但是我们的IK分词器他可不知道,他会把每一个中文拆成一个一个的文字,那这样的话就不对了,那怎么办?A,我们在这里需要告诉他,告诉我的IK分值器,我们这是一个整体,那该怎么办呢?大家看一下来往下。往下以后呢,我们需要在ES的根目录当中的plugin下面去找到那个文件目录,找到以后有一个叫con figure在里面有一个什么呢?我们的自定义的词典或者叫字典,在这个里面呢,我们要去配置我们的操作,所以打开。点开以后,我们的config里面有一个咱们找一下啊,在我们的这个plug ins里面有一个它我们点击conig,在这个里面,首先大家可以看到我们叫要找到意或者说创建来拷贝。报备以后呢,我们拿过来,其实啊,大家可以看到我们这边呢,我们就可以点一下了,来点击点击以后呢,放过来啊,放到这边来,嗯,好了。
08:01
穿过来以后,然后呢,在我们这个文件中去关联,比如在咱们的这个文件里面去关联那个文件打开。打开以后在这个位置自己的扩展词典,所以把我们刚刚的这个词点呢,我们拿过来在哪呢,叫customer在诶在这个位置拷贝。宝贝之后在我们的这个地方给它添加上就行了啊,添加上以后我这里先给它关掉啊,一会儿要重启的。好,那么接下来我们再来往下看,他说了,在这个文件当中,我们添加我们的内容啊,好,那么我们这里呢,给他写上,咱们点一下,嗯。打开打开以后,把我们刚才给大家写上的这个东西啊,来把给大家上的这个内容呢,我们拿过来在这儿咱们拷贝。那么拷贝的时候我就放到这里就行了,好重新启动一下,记住我要重新启动我们的服务器,那么这样的话,它会按照我们的规则进行分支,所以呢,我们来点击。
09:02
好了啊,完成之后我们启动完成了,现在呢,我们试一试来我们点击我们的扇点,点完以后,诶好像还不可以啊,稍微等一下,现在呢,我们这边好像还没有成功,诶正在启动呢,嗯。这个时候大家可以看到,你看这个不就是我们刚才的自定义的字典吗?嗯。好,那我们现在试一试啊,咱们点击散点,点击完成以后,大家看怎么了,你会发现我们这是不是只有一个了,因为它是一个完整的单词,完整的词组,好吧,它并没有分解成一个一个的文字啊,这个就是我们自定义的一个词汇啊,OK,咱们接着往下。那么下面呢,再给大家讲一讲,叫自定义分值器,就是我们想按照我自己的规则来进行分值,该怎么做呢?这里我们需要字符过滤器,分值器和我们的过滤器,有了这三个以后,我们现在呢就可以进行操作了,这个呢我们就演示演示就可以了,同学们啊,咱们这里呢,首先第一个我们创建索引,在创建索引的同时把它的分值器给它写上,所以啊,这个咱们原封不动的,咱们拷贝一下,原封不动拷贝。
10:08
好,拿过来以后我们要添加索引,所以点击body,诶,拿过来RA和我们的Jason行了,放过来,过来以后我们这里有一个叫my index啊,我们要创建索引了,好,那我们创建索引的话,我点send就可以了,填。点完以后保持成功没问题。那接下来我们把它解释一下啊来,刚才呢,我们给大家创建的什么呢?我们叫分值器,那么这个地方呢,大家可以看到分值器当中需要这么几个配置,第一个名称,你的分值器的名称是什么?这第一个第二个我们的类型,因为你是自定义嘛,我们就叫custom啊,然后呢,后面就叫字符过滤器,还有token,还有我们的什么filter过滤器,所以大家可以看到啊,我们的这个就是一个标准的一个分值器,然后呢,我们这边是一个什么呢?是一个过滤期,这个过滤器呢,它会把那些特殊的内容呢,给它过滤掉,说的简单一点,它就是一个停用词过滤啊。
11:07
那么这个呢,是一个字符过滤器,它将字符呢做了一个转换,将咱们的这个符号变成了end,它做了这么个事情,那好,那接下来呢,我们来验证一下咱们自定义的分值器啊,首先我们来发送请求,这个咱们叫啊,咱们来有一个,诶第一个它我们选择,然后选择它。放在接下来把那个body给它拷贝上,拷贝以后body我们的我们的。好查询,查询以后看结果,这时候大家会发现咱们的quick啊,咱们的end,我们的这个叫B,嗯,和这个FOX都有了,但是你会发现它就没有,为什么呢?因为咱们刚才看到了这是一个停用词啊,对吧,这是第一个二个呢,我们这个符号干嘛呢,转换成了我们的看看。对它做了一些字符的转换操作,以及我们的停用词的过滤操作,这个就是我们自定义的分时器。
我来说两句