有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

分词

分词示意

检索一个较长的日志时,通常只使用其中一部分内容进行检索。例如:需要检索出包含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"
双引号表示日志需同时存在这两个词,且两个词顺序严格一致才符合检索条件。
上述示例日志同时包含onlinesample,且词的顺序与检索条件一致,符合该检索条件。
检索条件B:"/online/login"
上述示例日志不包含login不符合该检索条件。

分词设置

日志分词依据包含两类,可在 索引配置 中设置。
分词符:可自定义需要按照哪些符号对日志进行切分,支持英文符号及\\n\\t\\r\\\\。在上面的例子中,@&()='",;:<>[]{}/ \\n\\t\\r\\\\即为分词符。
是否包含中文:中文较为特殊,不能使用中文符号作为分词符,而且仅按照符号对中文进行分词也往往达不到预期效果。例如,日志为用户登录失败,密码错误,需要使用"登录失败"进行检索,是不能通过符号对日志进行切分来满足检索需求的。此时可在 索引配置 中设置该日志“包含中文”,日志服务(Cloud Log Service,CLS)将自动将日志中的每一个汉字及汉字符号切分为独立的词。

索引

CLS 对日志进行分词后,采用倒排索引来存储日志中每个“词”在文档中的位置,用户快速根据检索条件匹配具体的原始日志。倒排索引是文档检索系统中最常用的数据结构。
索引决定了日志能够以什么样的条件来进行检索和分析,开启索引后才能进行检索分析。因此在上传日志数据前,需要为日志主题设置一个合理的索引规则,配置方式参见 索引配置