功能介绍
分词是搜索引擎中一个基础但重要的组件,分词的结果直接影响搜索效果。由于业务场景的多样,同一个短语在不同的业务、不同的语境下,其语义可能会不一样,期望分词的结果也不一样。为此,OpenSearch除了提供面向通用领域的基础分析器外,还提供了面向特定领域的分析器,如面向电商领域的电商分析器等。
为了更好的满足用户的业务需求,OpenSearch可以让用户在系统提供的基础分析器的基础上,通过结合干预词条的形式创建自定义分析器。在应用的索引字段的分析器中选择使用相应的分析器,以达到干预索引和查询时分词结果,确保搜索结果的质量。
词条干预
可以通过“二次分词”的功能管理干预词条。
开启二次分词表示用户自定义分词后,还会再次切分自定义分词结果;关闭二次分词则保留用户自定义的分词结果。
以词条“开放搜索”,分析器为“中文通用”为例,开启二次分词的结果是:
关闭二次分词的结果:
注意事项
自定义分析器的词条是该分析器中分析器类型里的分析器的全部词条和手动添加的词条的总和,并且手动干预的词条优先级高于默认分析器的词条
新控制台自定义分析器的个数最多为20个;
单个自定义分词器最多能包含1000个干预词条;
每个词条中,key为不超过10个字符,value为不超过32个字符;1个字符为1个汉字或1个英文字母;
词条内容中不能包含大写字母(A-Z),全角符号(\uff01 - \uff5e),中文标点符号;
语义切分干预词条中,key和value在去掉空格后,内容需相同;示例如下:
不正确的词条=>错误 的 词条 正确的词条=>正确 的 词条
第1个词条中,key和value去掉空格后,内容不一致,因此是不符合规范的词条。
key中不能包含有空格;示例如下:
不正确 词条=>不 正确 词条 正确词条=>正确 词条
第1个词条,key中包含了空格(“ “),因此是不符合规范的词条。
key的内容不能为同一个干预词典中其他词条value中的一部分;示例如下:
自定义分词器=>自定义 分词器 分词器 分词
第2个词条的key的内容“分词器”,是第1个词条value中的一部分,因此第2个词条是不符合规范的。但第3条词条是符合规范的。
流程演示
流程简述
创建自定义分析器 —— 线下变更 —— 索引重建 —— 自定义分词器效果展示
操作步骤
1.在开放搜索控制台主页左侧导航栏找到“搜索配置中心”,选择“召回配置”,找到“分析器管理”,点击【创建】:
2.创建分析器,定义分析名称,选择分析器类型:
3.添加干预词条,输入query,和分词结果,这里以“糯米”为例,并选择二次分词:
注意:分词用空格隔开。例:“糯米” ==> “糯 米”。
4.进行分词测试,测试分词器生效后干预词条的结果:
4.1.在测试文本中输入“糯米”:
4.2.多个自定义分析分词结果对比:
5.分词效果测试后,回到“召回配置”下的“基本配置”,对线上应用进行变更:
注:此处的“线下变更”,是根据用户当前的配置生成一个线下应用,线上应用不受影响。
6.在应用字段列表,分析方式一列中,给对应的索引选择自定义分析器:
7.等待索引重建后,生效:
自定义分析器效果展示
以“糯米”的文档内容为例,当使用“中文——通用分词时” 与预期不符(搜索“米”无法将带有“糯米、小米、大米”的文档召回),如图:按上述流程添加“test_zw”自定义分词器,并修改应用结构,索引重建后,拆分的term与干预后一致,如图:
注意事项
目前新控制台可对已创建的自定义分析器可进行词条添加,若已创建的自定义分析器已经被应用引用,则期间再次添加词条,需要进行索引重建后才会生效;如想及时生效,需要对分词有bad case的文档进行重新更新,以触发对新增干预词条的索引重建。
自定义分析器的Query长度不得超过10个字符
自定义分析器的Query不允许包含大写字母,全角符号,中文标点
自定义分词结果不允许包含大写字母,全角符号,中文标点
当关闭二次分词开关后,则严格遵从用户的干预结果设置,不再进行进一步分词,反之,允许基于客户的干预结果后进行进一步分词
已被应用引用的自定义分析器,无法删除