因为指定analyzer为whitespace,亦即按空格进行分词,得到["favorite", "Dialet"], doc1的my_text在进行倒排索引分词所使用的analyzer为standard分词器(以空格分词,然后统一为小写字母),得到的是["my", "favorite", "dialect", "is", "cold", "porridge"], 因为Dialet并存在doc1的倒排索引里,所以doc1并不会被...
注意:我们实际上可能会用不同的分词器,但是建议使用match_phrase时使用标准的一个个分词,这样是方便进行邻近搜索的控制的,如果使用ik等分词,执行match_phrase时分词是不可控的,所以结果也是不可控。match使用ik,match_phrase用standard结合一起使用也是可以的 搜索的词必须有且仅有["","方","宾","馆"]这几个词...
常用的stand标准分词,可以满足要求1)、3)、4)、5)。 标准分词器是什么鬼? 标准分析仪是默认分析仪,如果没有指定,则默认使用该分词器。 它提供了基于语法的标记,并且适用于大多数语言。 对于中文字符串,会逐个汉字分词。 标准分词器的结果如下: GET /ik_index/_analyze?analyzer=standard {"text":"公路局正在...
业务分析:显然对于上面的业务场景如果单独使用match的话,显然是不合适,因为按照standard分词,doc[3]的词条长度要比doc[1]的词条长度短,而词频又是都出现了[东][方][宾][馆]4个词,使用match匹配的话就会吧doc[3]排到最前面,显然业务希望把输入的文字顺序匹配度最高的数据排前面,因为我确实要找的是"广州东方宾...
term查询是基于词项的查询,而且当设置为term查询时,es不会对这个词做任何处理,但是在文本进行分词时,通常都会将大写转为小写,这个时候就会出现查不出来的情况,比如: POST /test_2017/_doc { "name":"Pantheon" } 这样创建出来的doc可以看到明显做了lowercase,因为用的standard分词器 ...
5.文中使用了standard分词,实际上可能会用不同的分词器,但是建议使用match_phrase时使用标准的一个个分词,这样是方便进行邻近搜索的控制的,如果使用ik等分词,执行match_phrase时分词是不可控的,所以结果也是不可控。match使用ik,match_phrase用standard结合一...
ES中分词需要对具体字段指定分词器等细节,因此需要在文档的映射中明确指出。 5.2 IK分词器 ES默认对英文文本的分词器支持较好,但和lucene一样,如果需要对中文进行全文检索,那么需要使用中文分词器,同lucene一样,在使用中文全文检索前,需要集成IK分词器。 ES的IK分词器插件源码地址: ES的IK分词器插件源码地址 下载...
这样ulluin属性采用standard分词,即单字分词,ulluin.ik采用ik_max_word即按词分词,ik_max_word的词典中去除所有的单字。 查询时先将查询短语分词,如果第一个token和最后一个token中存在一个字,那么这个字可能与原文中的下一个字或者上一个字组成词,导致ik_max_word无法查到,这时我们用standard分词器在ulluin中查...
es在给⽂本分词的时候,除了分词之外还有⼀个词条标记,就是position,例如我按照standard对以上三个doc的name进⾏分词会变成这样:doc[1]:⼴[0],州[1],东[2],⽅[3],宾[4],馆[5],酒[6],店[7];doc[2]:⼴[0],州[1],花[2],园[3],宾[4],馆[5],酒[6],店[7];doc[3]:东...
1) standard分词器 2) NGram分词器 standard分词器大家都比较熟,针对于汉字就是一个一个分,这种肯定是可以查全的。但一个一个字分的话,每个字对应的文档集合非常多,如果数据量达到了百亿,在求交集,计算距离时,效果非常差。 Ngram分词器类似于standard分词器,他可以指定分词的长度,然后用standard的方法切割。