对于数字字段这些,通过树
结构加了索引,能够直接比较大小。但是对于文本
加了索引,底层是怎么处理的?因为文本一是不是很好直接比较大小,二是还会涉及到模糊匹配(%
这种,或者正则),模糊匹配的执行过程是怎样的,怎么使用索引,或者那些情况能够使用索引?
有一些数据库支持全文扫描,底层实际上就是接入了分词
,但是这个一般都是独立处理,并不是简单的加一个索引(比如对用户昵称加一个索引)。
对于数字字段这些,通过树
结构加了索引,能够直接比较大小。但是对于文本
加了索引,底层是怎么处理的?因为文本一是不是很好直接比较大小,二是还会涉及到模糊匹配(%
这种,或者正则),模糊匹配的执行过程是怎样的,怎么使用索引,或者那些情况能够使用索引?
有一些数据库支持全文扫描,底层实际上就是接入了分词
,但是这个一般都是独立处理,并不是简单的加一个索引(比如对用户昵称加一个索引)。
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
文本索引一般有2种情况
1种和数字没什么区别也是比大小,就是做字典序比较。
第2种就是你说的全文索引,本质和搜索引擎的原理一样,分词以后做倒排索引。
例如有3条记录,分别是
1:中国人民大学
2:中国科技大学
3:南方科技大学
分词假设只能分出“中国”,“人民”,“科技”,“大学”,“南方”五个词。
那么生成倒排索引如下:
中国:1,2
人民:1
科技:2,3
大学:1,2,3
南方:3
用这个索引就可以根据你输入的“科技”找到第2,3条记录包含这个词
对于like %的模糊查询,如果是给定前缀,如中国%,那么可以利用上第一种索引,通过前缀可以缩小查询范围。如果前缀是未知的,如%大学,那么就只能全表扫描逐个做字符串匹配了。
正则查询同理,如果正则中有常量前缀,那么可以利用上字符串的索引,否则不能。