ElastiSearch默认分词器

1 Elasticsearch搜索介绍

在Elasticsearch中的数据可以分为两类:精确值(exact values)以及全文(full text)
精确值:例如日期类型date,若date其有两个值:2014-09-15与2014,那么这两个值不相等。又例如字符串类型foo与Foo不相等。

全文:通常是人类语言写的文本,例如一段tweet信息、email的内容等。
精确值很容易被索引:一个值要么相当要么不等。 索引全文值就需要很多功夫。例如我们不仅要想:这个文档符合我们的查询吗?还要想:这个文档有多符合我们的查询?换句话说就是:这个文档跟我们的查询关联大吗?我们很少精确的去匹配整个全文,我们最想要的是去匹配全文文本的内部信息。除此,我们还希望搜索能够理解我们的意图:例如
如果你搜索UK,我们需要包含United Kingdom的文本也会被匹配。 如果你搜索jump,那么包含jumped,jumps,jumping,更甚者leap的文本会被匹配。
为了更方便的进行全文索引,Elasticsearch首先要先分析文本,然后使用分析过的文本去创建倒序索引。

2 Elasticsearch全文搜索默认规则

Elasticsearch全文检索默认分词器为standard analyzer。standard analyzer中,character Filter什么也没有做,Token Filters只是把英文大写转化为小写,因此Elasticsearch默认对大小写不敏感,下面主要介绍Tokenizer。
token分隔符把text分隔为token(term)。数据写入的时候会使用standard analyzer处理,text会被处理为token列表。搜索的text也会执行相同的处理,最后使用处理后的token和源text处理后的token匹配。


建立倒序索引的过程

2.1 英文

2.1.1 大写英文单词会转换为小写,在搜索英文时大小写不敏感

除了“a-z、A-Z、0-9、_”以外,但不包括“.;,”这三个字符,其他情况都是token分隔符。

2.1.2 “.”介绍

“.”链接number和char时,作为token分隔符,其它情况不是分隔符

1)“number.number”经过standard analyzer处理后,token列表[number.number]
例如“123.123s”,搜索“123”是搜索不到的,搜索“123.123s”是可以匹配的
2)“char.char”经过standard analyzer处理后,token列表[char.char]
例如“test.test”,搜索“test”是搜索不到的,搜索“test.test”是可以匹配的
3)“number.char或者char.number”经过standard analyzer处理后,token列表[number、char]
例如“test1.s1”,token列表为[test1、s1],搜索“test1”是可以匹配的

2.1.3 “;”介绍

“;”链接number和number时,不作为token分隔符,其它情况都是分隔符

1)“number;number”经过standard analyzer处理后,token列表[number;number]
例如“123;123”,搜索“123”是搜索不到的,搜索“123;123”是可以匹配的
2)“number;char或者char;number”经过standard analyzer处理后,token列表[number、char]
例如“test1;s1”,搜索“test1”是可以匹配的
3)“char;char”经过standard analyzer处理后,token列表[char、char]
例如“test1;ss1”,搜索“test1s”可以匹配的

2.1.4 “,”介绍

“,”链接number和number时,不作为token分隔符,其它情况都是分隔符
1)“number,number”经过standard analyzer处理后,token列表[number,number]
例如“123,123”,搜索“123”是搜索不到的,搜索“123,123”是可以匹配的
2)“number,char或者char,number”经过standard analyzer处理后,token列表[number、char]
例如“test1,s1”,搜索“test1”是可以匹配的
3)“char,char”经过standard analyzer处理后,token列表[char、char]
例如“test;s1”,搜索“test”是可以匹配的

2.1.5 特殊情况

在最前面和最后面都是token分隔符

1)“[,.;]char [,.;]”经过standard analyzer处理后,token列表[char]
例如“,.test…”,搜索“test”可以匹配
2)“[,.;]number [,.;]”经过standard analyzer处理后,token列表[number]
例如“,.123…”,搜索“123”可以匹配
3)“_[token分隔符]number或者”经过standard analyzer处理后,token列表[number]

2.1.6 综合用例

存储字符串:“123 test1:a_b a.b”,分词后的token为:[123、test1、a_b、a.b]

1)使用关键字term搜索 123、test1、a_b或a.b可以匹配
2)使用关键字term搜索“test1##a_b”也可以匹配,在这儿“#”只是起了个分隔符的作用,没有实际意义,和搜索“test1:a_b”的意义一样,搜索字符串分隔为两个token[test1和a_b]去匹配。
3)使用关键字term搜索“test1?.,“也可以匹配,相当于使用token”test1“去搜索
4)搜索“a“,就没有匹配结果,源字符串分隔后的token中没有“a”

存储字符串:“123;456 test”,分词后的term为:[123;456、test]

1) 查询“123”是没有返回结果的
2) 查询“123:456”是没有返回结果的
3) 查询“123;456”是有结果
4) 查询“.123;456#”是有结果
参考:http://unicode.org/reports/tr29/

2.2 汉语

除了汉字外的所有字符都是分隔符,每个字都会作为一个term。因此在搜索中,存在除了汉字以为的字符都不起任何作用,不会作为匹配字符.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,423评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,147评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,019评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,443评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,535评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,798评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,941评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,704评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,152评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,494评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,629评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,295评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,901评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,742评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,978评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,333评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,499评论 2 348

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,629评论 18 139
  • sqlmap用户手册 说明:本文为转载,对原文中一些明显的拼写错误进行修正,并标注对自己有用的信息。 ======...
    wind_飘阅读 2,035评论 0 5
  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 当给sq...
    xuningbo阅读 10,277评论 2 22
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,216评论 0 4
  • 每个人都有一个让自己难忘的人 2014年的夏天我的一个好朋友(女的)让我帮忙打个人,我给她说发来手机号和q...
    挚爱君宝阅读 144评论 0 0