00:00
呃,那么再往下走呢,说按照我们这个分词它的一个子属性来进行查询,什么意思呢?刚才咱们查询的时候呀,这个是查询的电影的名称,那么现在呢,我不想按照电影的名称查询了,那我想按照谁呢?我想按照咱们的演员的名称来进行查询,比如说我现在呢,想把咱们这个电影的演员里边啊,对,就张涵宇呢给我查出来啊,那接下来咱现在来看一看这个东西应该怎么来实现啊,我想按照演员的名称来进行查询,那么如果按照演员名称进行查询的话,注意咱们这里是不是应该是GA的操作,然后接下来查询的是我们当前的索引,然后接下来查询是不是应该是search呀,那么你在查询的时候,你是在加条件,加条怎么查,怎么加呢,一个query这样一个属性,然后接下来演员的名称这里是不是有一个match呀,对吧,哪个字段呢?咱们现在演员在哪呢?是不是在咱们的actor list这个属性下面有一个名字呀,对吧?那也就是说原来啊,咱们上午在查询的时候。
01:00
直接呢,是我们的内部现在呢,应该是这个属性下的一个子属性嘛,对吧,这个属性下的一个子属性对吧?那我现在想按照它进行查询的话,那应该怎么办呢?那可以打家开,有一个叫什么actor list的ad,这这这个是不是我ID属性,还有一个叫什么呢?还有一个叫act this name对吧?然后发现我们现在name呀,它有两个选项,一个呢带keyboard,那么另外一个不带,那么这个是怎么回事呢?上午其实我给大家说过,当你现在呀,去创建一个索引的时候,如果当前咱们这个属性是字符串类型,那么其实呢,它在底层是帮助你维护了一个部分词的这样的一个属性啊,对吧,这个部分词就是谁呢?就是咱们keyword。对吧,那我现在呢,暂时啊,我在查询的时候,我呢还是按照咱们的内部查询,比如说我现在想把咱们这个演员是张涵玉,对吧,这给查出来,对吧?那么接下来大家想一想,我这么执行,那么应该有多少查询结果啊,多少个结果,多少个结果来看一看,咱们现在在执行的时候,它本身第一个咱们这个湄公河行动,这就张涵宇,然后接着呢,咱红海行动,这就张涵宇,然后还有一个咱们现在呢,这个红海事件这里没有张涵宇,那我现在如果要查询的话,对吧,那你觉得应该有几条数据啊。
02:24
三个是不是和上午是一样的道理啊,对吧,还是三个对吧,和咱上午是一样道理,为什么呢?因为它底子是不是要对我搜串数据来进行分这个分词呀,对吧?哎,所以说呢,这个是按照分词自主性来进行查询,对吧?那么如果说啊,那我现在呢,我想按照咱们这个,咱不想使用分词了,我觉得我现在你想我明明是想把咱们张涵予啊,他这个演的电影给我查出来,但是呢,你给我反回的结果里边有谁呢?张三丰对吧?那这肯定不符合我的要求,对吧?那我不希望这个做分词,那么如果我不希望做分词的话,那么这个时候呢,大家注意在匹配的时候呢,那这块对吧,就不是我们这个啊这个match了,那这个变成什么呢?Take呢,变成我们这个match,然后呢,F,那它表示什么呢?它表示的是我现在呢,要按照短语进行查询,相当于什么?相当于我们这个circle口语句这种like模糊查询啊,相当于我们这个like模糊查询对吧?那么它呢,就不再使用我分词技术了啊。
03:24
它就不再使用我们这个分子技术了,对吧?那么咱们现在呢,来看一看啊,同学们,如果你要想这么做的话,那我在这里对吧,我现在呢,来嗯短语来查询对吧?那我在这里还是去做w get,然后这是move index,做我们的一个search查询操作的查询操作,然后接下来这呢查询有一个宽属性,只不过呢,这个时候咱们使用的是它的就是它,它相当于我们的一个like,哪个字段呢?那是不是应该还是我们现在act list,它一个name呀,然后接下来咱们把张涵宇给拿过来对吧?张涵宇拿过来,那么这个时候在执行的时候呀,同学们看一看,那目前他现在这里面的记录是不是只有两个呀,对吧?哎,就相当于什么,相当于啊原来的like对吧,什么呢,我现在的名字啊,它不分词,把咱们这个张汉宇对吧,它用两个百分号给它括起来做一个整体,就把它。
04:24
这个东西整个做一个整体,对吧?那不再进行分词了,对吧?那这样的话,咱们现在这里是不是只有两个记录了,对吧?那么其实除了这种方式可以实现我们的需求之外呢,其实还有一种方式,对吧,也可以实现我们的一个需求,对吧?那么这种方式什么呢?这种方式啊,是通过我们的精准搜索匹配对吧来完成对吧?那么如果是精准搜索匹配的话,那么大家想一想,我们现在在底层对吧?如果说啊,你要是字符串的话啊,比如说咱就看我们这个a list吧,比如说你看咱们现在在我这里边有一个什么呢。有一个act list这个属性,那么这个属性里边呢,有一个ID,有一个name,这个name本身呢,它其实又有两个类型,一个呢是test,这个呢是分词的,还有一个呢找keyboard,这个呢是不分词的啊这个类型它其实呢是不分词的,那如果在查询的时候,咱们按照key word查询是不是就可以了呀,对吧?所以说呢,那么咱们现在啊,在这里我可以什么呢?我可以把部分词进行查询啊,部分词然后呢,通过咱们这个精准匹配来进行我们的查询啊,那么如果想实现这些功能,那应该怎么办?还是我们的get,然后呢,Move inex对于我们当前这个索引来进行一个search查询,那么这块呢,它只要是查询啊,那么这里就是我们现在这个query啊,就咱们这query,然后接下来,那么这里咱们原来呢,匹配的东西,由我们现在什么match match它是不是可以。
05:59
A,对吧?来指定我们匹配条件呀,对吧?然后还有什么呢?按照短语来进行匹配对吧?咱们下面这两个其实都用过了,对,你看match对它呢是我们这个什么呀,分词匹配,对,这个是我们这个分词匹配,呃,分词啊来进行我们这个查询,现在呢,是按照短语相当于什么?它相当于啊,我们这个like,我们这个like啊相当于like,然后接下来不分词,那么如果不分词的话,那么这块呢,注意它呢,那应该是我们这个term,把这个term表示什么呀?这个term表示的是我的精准匹配啊注意这个term它表示的是我们的精准匹配啊精准匹配,那么精准匹配的话,那么哪个字段呢?对吧?那么咱们哪个字段呢?那这里你是指定一下呀,咱们应该是我们这个act list name,对,然后接下来,那么如果精准匹配的话,那么这个值咱们。
06:59
同友们拿过来啊,韩宇对张涵宇对吧?然后接下来咱们看啊查询结果注意看同学们,那我现在如果精准匹配的话,注意看,在这里我要去执行啊,那么执行的时候呢,这个时候他给咱们啊这个返回的内容好像是没有对吧?你看我现在在执行的时候对吧?哎,我现在在这里啊,没有查到什么东西对吧?我在执行咱们这个精准匹配的时候,对吧?那么这会没有查东西对吧?什么原因呢?大家注意看,那么如果说啊,你要想通过精准匹配速度的话,那么这个时候它这个东西也不能用我们这个原来的这个这个test类型了,T不分词的呀,默认情况下,你如果把这个actor,对吧,这个内容拿过来,那这是分词的对吧?但如果你要想不让它分词,那么这块呢,注意咱们本身在这里,你把这两个又拿过来对吧,注意看啊,这里他应该其实在咱们这应该报个错的对吧,你看我现在啊,在咱们这term里边,我把这个东西拿过来了,对吧,其实在咱们这里边执行的时候,如果说啊,你要。
07:59
他直接去执行,它应该有一个错误提示啊,比如说你看我的term好,接下来在咱执行的时候,我就应该有个错吧,没错,咱们现在直接keywboard一下吧,对吧?来,那么这个时候你如果把keywboard拿过来,大家看一看,这个时候是不是可以把它给查出来的,对吧?我记得应该有一个地方,他可以给咱一个错误提示,对吧?没提示也没关系,对吧,就是说咱先没查到啊,没查着对吧?然后接下来呢,有同学可能会想啊,对吧,这两个东西有什么区别没有同学们。
08:26
其实你看他俩是不是都可以,哎,把咱们现在按照张汉语,然后呢,给他精准匹配出来,对吧,它有什么区别没有。你们觉得区别在什么地方,上面是相当于like,然这个呢,是精准匹配,就完全等于它的这个呢,其实模菇查询对吧,它区别在什么地方,区别在这对吧,这个除了张涵宇不还有张翰嘛,对吧,我现在把这个东西假如说改成这个了,对吧?那么如果说啊,我现在呢,把这个改成张涵对吧?然后接下来我在查询的时候,我问大家能不能查到,应该能查到吧,对,再看是不是还有两个呀,那么如果这个精准匹配的时候,我现在呢,把张翰也给改了,改成张翰了,这个时候咱们再查询,这个时候是查不到的,对吧?哎,所以说呢,这两个是有区别,虽然说刚才咱可以实现我们相同的效果,但是呢,它本身有区别,一个是相当于我们的like模查询,一个呢,是用我们现在没有分词的这个字符串啊,没有分词的这个字符串和谁呢?和咱们查询内容,他俩进行一个精准的匹配啊,它进行精准匹配好了,这是关于我们现在呢,它的一个对吧,这个精准查询啊,精准查。
09:35
去,然后接下来那么再往下走对吧,再往下走,这里有一个咱们这个负子对吧?这个叫什么呢?叫容错匹配啊,那么什么叫容错匹配呢?来大家注意看咱们在这里啊,容错匹配对吧?容错匹配啊,然后接下来呢,咱现在呢来做查询get还是查询move index,然后在这呢,我去做我们的一个search对做查询,然后接下来在这呢,应该是query,然后这里有一个我们的一个first对next字段呢,比如说还是我们现在的这个name对吧,还是我们现在的这个name,然后接下来这name这里边对吧,我现在这name里边是不是有一个什么红海行动啊对吧,红海事件是吧,那我现在呢,想按照咱们的right对吧,这个查询一下,那么查询完毕之后呢,发现两个把谁呢,把红海对吧,这个行。
10:35
动,然后还有很多的红海事件给我查出来了,但是我在写这个东西的时候呀,手一抖,写成RA了。写成rad了对吧,那么这个时候能不能查出来呢?对吧?来注意看同学们在咱们这里边对吧,是不是也可以查出来呀,对吧,这就是我们一开始啊在讲说传统的关于数据库,在做咱们的权威检索的时候,那么有的时候呢,它有些功能都做不到,对吧?比如说像上次我给大家说的,说我现在想搜索手机,对搜什么手机呢?比如说我现在搜索咱们的小木手机,对吧,本来我想搜索谁,我是不是想搜小米呀,对吧,但是呢,诶我不小心我给你搜成小木了,对,那你看人家给他提示你虽然说搜索小木手机,你这里边是不是全是小米手机啊对吧,其实就干什么帮你进行了一个容错啊,帮你进行容错,咱们现在也是这样了,对吧,我明明我想查询我们这个啊RA红外系统,但是我不小心写成RA了,对吧,那么这个时候呢,它可以帮助你啊来进行容错对吧,可以容到什么程度呢?对吧?注意同学们也不能太离谱对,比如说现在再来一个对吧rad,然后你去查询你是不是。
11:44
想让它和咱们现在这个red进行匹配啊,对吧,那么这个时候呢,再去查询,那就匹配不上对吧?那么这个容错呢,其实对吧,你看的英文还好对吧,但其实呢,对咱们的中文来讲,它的实现呢,不是特别好啊,对咱中文实现它不是特别好,你说我们现在你如果说啊让英英,就比如说让外国人来写的话,对吧,说让咱们帮着做一个容错对吧,那外国人是不是还得把这中国的汉字对吧,给他研究一下呀,对吧,你说我现在这个东西你得研究他俩,其实这个东西比较像对吧?所以说呢,这个东西它本身对我们这个朋友来讲,实现的并不是特别好,这种错啊,你这个知道一下就行啊,这个知道一下就行好了,呃,那么除了这个容错脾配之外呢,那么接下来再往下走,来看什么呢?来看一下我们这个过滤啊,来看一下我们个过滤,那么过滤呢,有两种方式啊,过滤有两种方式吧,那么第一种。
12:44
方式呢,是先匹配再过滤,然后第二种方式呢,是匹配和过滤啊同时执行,首先呢,大家再想一想,我我我感觉啊,这个过滤是什么?过滤是不是把按照条件,然后过滤出符合的一些这个记录啊,对吧?然后匹配的其实是不是也按照条件把这个符合这个条件的记录给查询出来,对吧?那么咱们现在其实这是两个过滤操作,对吧?那么咱们现在呢,你看一看啊,如果说先匹配再过滤,这是怎么回事,比如说我现在呢,想查询出来对吧,这个名字呀。
13:21
包含red的,那并且呢,演员的列表中,它的一个演员的ID对吧?那么等于三的,那么这个时候呢,把这个数据给我查出来啊,把这个数据给我查出来对吧?哎,那么咱们现在呢,在这里啊,我可以怎么办呢?我可以这样对吧?我现在注意啊,我要做两个操作了,做两个操作先干什么呢?先把咱们这个啊名字,电影名称包含咱们这个red的对吧?然后呢,对吧,给它查出来,然后查完之后呢,对吧?然后呢,把这个演员的ID等于三呢,给它过滤出来对吧?那么这个如果实现的话,怎么来实现呢?来在这里啊,我现在是先匹配,然后呢再去过滤对吧?先匹配再去过滤对吧?那么我现在在这里,那就是做查询呗盖的操作,然后呢,More index,然后进来,这个是我们的一个search,对吧,Search首先。
14:21
那咱们在这里要做一个我们这个查询对吧?那么查询这里我先呢去匹配一下,匹配谁呢?匹配我们当前名字,这个名字里包含谁呢?包含我们这个red的对吧?包含red对吧?那么大家现在执行,那么这里其实是不是把我们两条数据查出来的,一个是红外行动,一个呢是红外事件,对吧?然后接下来,那么除了这个之外呢,那接下来再往下走,我要干什么呢?我要对咱们已经查出的数据再做一次过滤,对吧?那么这过滤是什么呢?那你看一看有一个叫post filter post一般是什么什么之后,对吧,Take filter,然后接下来那么在咱们这里边对吧?那如果你要想过滤的话,那么按照什么来过滤的,对吧?那么这里我希望啊,您可以按照我们当前它的过滤条件把这个拿过来,对吧,那么这里边大家看一看term,这这这个term什么意思,是不是精准匹配呀,对吧?那么咱们现在这里也可以什么呀,你可以在这这里选择什么呢?选择我们的term精准匹配,那么对哪个字段精准匹配呢?
15:21
我现在想对我们这个a list ID等于几的呢?等于三呢,对吧?把这个东西给查出来吧,那么形成两个同学们,这其实两个对吧,先去干什么,先去对匹配一下,匹配完之后呢,对匹配的记录再进行一次过滤,对吧?大家看这个时候咱们是不是可以把名字包含红牌red的,然后呢,咱们现在ID里边对这个ID等于三的是不是可以给查出来啊,对吧,但是这种方式呢不太好。啊,这种方式不太好,比如说啊,我现在呢,我有一个需求啊,我现在想干什么呢?我现在想查询出啊,查询出我们班级中啊,我们班级中啊,这个18岁以下的男生,就是未成年的男生,讲课的时候给注意点是不是18岁的以下的男生,对吧?假如说存在啊,假说存在,那我可以怎么查呢?对吧,那我现在其实我可以分两步,第一步干什么,我说哎,咱们班所有男生到楼下等我。
16:31
这是第一步,是不是相当于从我现在咱们整个这个所有学生中,把男生查出来了,对吧,然后我就下楼了,到楼下去,我说18岁以下的留下,18岁以上的上去。那你想一想,我这个事儿是不是让18岁以上的这些哥们白折腾了一遍呀?对不对,就什么意思呢?就我现在想我我比如说我现在想带你们去对吧,干干点什么什么什么事是吧,然后呢,我看一看对吧,18岁以下的去啊,18岁以上不能去对吧?那然后接下来,那我现在说,诶,那咱们现在先男生能下去,那后来我再问满足18岁了吗?对吧,如果满足18岁的话,那么这个时候对吧,我带你去,如果要18岁以上呢,我不能带你去,那你是不是还得再回来呀,对吧?那能不能这样,我在查询的时候,哎,咱们班男生都在这呢,对,我在查询你的时候,你男生对不对,到18岁了吗。
17:19
我是不是可以同时进行啊,对吧,就说所以说咱们现在第二种方式什么呢?第二种方式就是我们现在的匹配,还有咱们查询呢,其实同时进行对吧?这第二种方式匹配和过滤,然后呢,同时啊,匹配和过滤同时,那么如果匹配过滤同时的话,比如说我还是刚才这个需求,我还是刚才需求,那么这个东西应该怎么来实现呢?那大家来看一看,那么这块呢,它会引入一个新的内容,对吧?原来咱们查询的时候是不是直接就query啊,然后query里边现在多了一个什么呢?多了一个布尔对吧?其实呢,这个叫我的个布尔对尔查询,对布尔查询来看一看我当前这里边条件是不是满足一共几个条件呢?两个条件,那第一个咱们是不是得满足,那么它呢,应该是这个名字是我们这个红色的名字是红色,那么第二个呢,咱们现在要去干什么呢?对我们这个这个演员的ID来进行过滤的,这两条件呢,同时都能满足短均匀,我在过滤数据的时候,要我现在呢,要把这两条件呢。
18:20
对,都给他判断一下,找到具体代码怎么来写对吧?咱们现在来看一看,首先呢,还是做我们这查询啊,还是做查询,然后接下来查询从哪查,从我们的一个目index里边来去行查询,对吧?然后接下来这里search,这个是我们的一个search,对search,那么我们现在呢,做查询,那只要是查询咱们是不是que是得有啊对然接下来那我是不是得同时满足两个条件呀,那有一个不玩查询,那应该是不玩对吧,然后接下来那么咱们现在这两个条件,一个什么,一个是必须得等于我们现在对吧?这个什么呢?必须得等于我们这个right,或者包含right对吧,那也是匹配一下,那么怎么匹配呢?大就看这里一个must对吧,你必须得满足这个条件对吧,满足什么条件呢?那么这块在咱们这里我要去做一个匹配,那么其中我要求咱们当前的这个名称对吧,那么应该包含我们现在这个re RA啊包含RA。那么如果预。
19:20
查询的话,那么你把这两条数据啊,给我查出来了,但是没完事的同学们对吧,我现在再去我们这个过滤的时候,对吧,除了满足这个条件之外,我还得干什么呢?我还得去做一个我的过滤对吧?那么这个呢,像个filter,那么这个过滤的话,怎么过滤呢?我就精准匹配就行了,表说老师我现在我们呢,不是我们这个这个精准对吧,比如说在咱们这里边对吧,我呢对吧,按别的查询都要注意,它本身的也是属性嵌到属性的,对,那么咱们现在比如说说我再在这里再来一个must怎么办?如果再来一个must的话,那么这块呢,大家看你的语法,它是不是应该在咱们这个布尔下面呀,对吧,或者说什么,或者说如果你现在有多个我们这个ma条件的话,那你在这里它是不是一个数组。
20:05
对吧,那么你可以放在这里对吧,进行什么?进行我们现在它的一个分子匹配对吧,然后接下来咱们呢,同时做一个过滤,那我现在想做一个什么呢?比如说精准匹配对吧,那么这个精准怎么来精准是吧,直接我们这个term对吧,那么这个term呢,那咱现在应该是actor对吧,List的ID,然后接下来再到这里边对吧,把我们现在这个三对吧给拿过来,然后一查询对吧,和刚才呢是一样短,这效果啊是一样的啊,这效果是一样的,但是呢,它底层啊在执行的时候是不一样。啊,这个底层呢,在执行的时候,这是不一样的啊,底层执行是不一样的,对吧?上面呢是先去做一个我们这个啊匹配啊先去做一个匹配,然后接下来对咱们的数据呢做一个过滤,那匹配是怎么匹配的呢?对吧?它呢其实是我们分子匹配啊,先通过query来做分子匹配,那么下面这块呢,对吧,那么它呢也是对吧,先呢去做我们这个分子匹配,对吧?然后接下来那么在同时呢进行过滤,就在匹配的时候呢,同时啊就把咱们这个符合条件呢过过滤出来啊过滤出来。
21:17
好了,这是关于什么呢?呃,这个呢是关于啊,我们现在它的一个啊过滤啊这两种形式啊过滤这两形式,然后接下来那么还有一个是按范围查询对吧?其实它把光放为我们这过滤了,其实呢也是一种查询,对吧?那么这个方式查询是怎么回事呢?比如说啊,那么咱们现在在这里我呢去查询一下get,然后在这里有我们这个in,然后呢,做一个我们的个search search来查询一下,对吧?那么我现在在电影里边,它其实有一个什么呢?有一个模属性叫豆瓣评分对吧?那么其中咱们现在没模型的8.0,然后这个呢,评分8.5,然后这个评分呢是五,我现在啊觉得五分呢,这个看起来没意思,对吧?所以说呢,我希望什么,我希望按照豆瓣评分来进行一个范围过滤,对吧?啊,按照范围过滤吧。
22:18
然后呢,将咱们这个豆瓣评分在咱们这个多少到多少呢,比如说是六对,然后到九啊,到咱们这个九啊的数据啊,它的一个文档嘛,啊查询出来啊,那如果说我现在呢,要想实现那么这些功能的话,对吧,那这里咱们肯定呢再去查询啊,这没这这没问题,然后接下来那么六到九其实是个范围呀,对吧?那么这个范围什么样的来有一个关键字叫RA啊,这个东西有一个关键字对吧,叫我们这个range啊,然后接下来当你把这个东西写完之后,对吧?那么这块什么这块呢,是我们的肺儿童。
23:06
啊,就是你要对哪个字段来进行一个我们这个范围的过滤,那咱们这里应该是豆瓣评分吧,对吧,然后接下来这个表什么含义。代表什么对吧,这表什阿,像这个这个很长时间了,有班学生,然后呢,再去维护公司的一些S的时候,就发现这里S里面有一些写法是这么写的,对吧。不知道啥意思,一个是我们一个是格离子,对吧,就是咱们现在有的时候呢,在一些园中,它会对咱大于号小于号的进行转译,对吧?比如说我们现在在my be后边,咱们会涉及到啊,在my be里边,对吧?那我们现在呢,如果涉及到小于号了,或者大于号了,它和我们现在这个插L配置文件中,它的开始和结束标签是不是冲突了,所以说需要做一个转移,对吧?那么在转移的时候呢,那么如果小于号的话,那应该是我们现在它的一个LT对吧?LT表示什么含义对吧?Lesson than对吧,比什么时候小,然后这个呢,GREAT3比什么什么大对吧,比什么大,那么咱们现在又加上E什么意思呀,EQ嘛,对吧,那也说小于等于,大于等于几呢?咱们要查去六到九是不是,那就六倍小于等于呢九呗,对吧,小于等于九,然后接下来咱们现在来执行一下看效果对吧,那么这个八有,然后呢,8.5有,但是我们这个五数不是没有啊,对吧。
24:35
这个是关于我们这范围查询下来说一下。Lateral。行吧。
25:11
经历一会儿啊,来继续我就不写了啊,不再写一遍是不是好了,那么这个呢,是关于我们现在呢,它的一个我们这个范围过滤啊,发射过滤,我把这个稍微停一下啊把这个。
我来说两句