一、分析器介绍
- Havenask作为一个搜索引擎,在构建索引时会将数据整理为倒排索引格式,从而支持后续的高效查询。具体来说,输入的文档会被分词器tokenizer分解为片段进行存储。分析器analyzer则是Havenask在分词器基础上定义的概念,目的是将不同类型的分词器以统一的描述方式暴露给引擎使用。
- 分析器=分词器插件+初始化参数的配置。
- 在建表时,可以为字段指定使用的分析器类型从而实现对分子过程的控制。
二、解释分析器主要配置
分析器配置文件最重要的字段是analyzers 与 tokenizer_config。
- analayers 是建表时被引用的分析器,支持配置停用词与归一化选项,需要注意的是,对于自带的分析器类型,需要通过 tokenizer_type 指定,而对于非内置的分析器。
- 如这里展示的 jieba 分词器,需要先在tokenizer_config.modules中定义动态库的位置,然后在tokenizer_config.tokenizers中传入分词器初始化所需的参数,最后在analyer中通过tokenizer_name引用,其中parameter参数的填写完全取决于分词器具体的实现,最终会以字典的形式传递给分词器代码作初始化。
- 最后,建表时,通过analyzer指定字段使用的分析器类型即可。
建表配置:
"columns": [ { "name": "title", "type": "TEXT", "analyzer": "jieba_analyzer" }, // 省略 ]
分析器配置:
{ "analyzers": { "jieba_analyzer": { "tokenizer_name" : "jieba_analyzer", "stopwords" : [""], "normalize_options" : { "case_sensitive" : false, "traditional_sensitive" : true, "width_sensitive" : false } } // 省略其他 }, "tokenizer_config" : { "modules" : [{ "module_name": "analyzer_plugin", "module_path": "libjieba_analyzer.so", "parameters": { } }], "tokenizers" : [{ "tokenizer_name": "jieba_analyzer", "tokenizer_type": "jieba", "module_name": "analyzer_plugin", “parameters”: { 省略 } }] }
三、实战演示
- 首先,根据文档中的指引完成了集群的初始化,并且创建了一张直写表in0。我们主要关心title与subject两个支持倒排索引的字段。为与后续使用 jieba 分析器得到的结果进行对比,这里先插入一条语句,观察查询结果。
- 从查询结果可以看出,默认的分词器仅基于空格进行了分词,同时使用“临江仙”作为关键字无法检索到插入的数据的。接下来,修改表的schema,将两个text字段修改。使用 jieba分析器后创建新表in1,直接使用Havenask默认的分析器配置文件,其中已经包含了jieba分词器相关的配置,原理不再赘述。我们使用的新 schema对这两个字段进行修改,表格建立完成。
- 现在插入数据,可以发现输入的文档按照预期进行了分词,同时基于切分后的短语可以检索到插入的数据。
四、总结
- 实现自定义分词规则的组件,要使用自定义的分析器,首先需要完成分词器的开发,得到动态库,然后在分析器配置文件中,配置插件库名称与初始化参数,最后,在建表时的字段中配置对应的分析器名称即可。Havenask分析器是
- 实现分析器插件的代码可以参考Havenask代码库中的如下链接路径:https://github.com/alibaba/havenask/tree/main/aios/plugins/havenask_plugins/analyzer_plugins
- 具体Havenask分析器的操作视频可以通过链接查看:https://developer.aliyun.com/live/253921?spm=a2c6h.14164896.0.0.604547c5N5yL9Z&scm=20140722.S_community@@%E8%A7%86%E9%A2%91@@253921._.ID_253921-RL_havenask-LOC_search~UND~community~UND~item-OR_ser-V_3-P0_2
关注我们:
Havenask 开源官网:https://havenask.net/
Havenask-Github 开源项目地址:https://github.com/alibaba/havenask
阿里云 OpenSearch 官网:https://www.aliyun.com/product/opensearch
钉钉扫码加入 Havenask 开源官方技术交流群: