分词
分词示意
检索一个较长的日志时,通常只使用其中一部分内容进行检索。例如:需要检索出包含
sample
的如下完整日志:10.20.20.10;[2018-07-16 13:12:57];GET /online/sample HTTP/1.1;200
由于日志全文很长,除
sample
外还有很多其他内容,其与检索条件并不是直接相等,因此不能直接使用sample
作为检索条件来检索该日志。为满足该检索需求,需要将日志全文切分为多个片段,每个片段称之为一个“词”,而这个过程称之为“分词”。例如:按符号对上述示例日志进行切分,只要出现了
@&()='",;:<>[]{}/ \\n\\t\\r\\\\
范围内的符号,就切分日志,将得到如下的词:

检索条件为
sample
时,上述分词后的日志包含sample
,即认为符合检索条件。检索条件本身也会进行分词,例如下图2种检索条件:


检索条件A:
"/online/sample"
双引号表示日志需同时存在这两个词,且两个词顺序严格一致才符合检索条件。
上述示例日志同时包含
online
和sample
,且词的顺序与检索条件一致,符合该检索条件。检索条件B:
"/online/login"
上述示例日志不包含
login
,不符合该检索条件。分词设置
分词符:可自定义需要按照哪些符号对日志进行切分,支持英文符号及\\n\\t\\r\\\\。在上面的例子中,
@&()='",;:<>[]{}/ \\n\\t\\r\\\\
即为分词符。是否包含中文:中文较为特殊,不能使用中文符号作为分词符,而且仅按照符号对中文进行分词也往往达不到预期效果。例如,日志为
用户登录失败,密码错误
,需要使用"登录失败"
进行检索,是不能通过符号对日志进行切分来满足检索需求的。此时可在 索引配置 中设置该日志“包含中文”,日志服务(Cloud Log Service,CLS)将自动将日志中的每一个汉字及汉字符号切分为独立的词。索引
CLS 对日志进行分词后,采用倒排索引来存储日志中每个“词”在文档中的位置,用户快速根据检索条件匹配具体的原始日志。倒排索引是文档检索系统中最常用的数据结构。