文本-自定义分析器

更新时间:
复制为 MD 格式

功能介绍

分词是搜索引擎中一个基础但重要的组件,分词的结果直接影响搜索效果。由于业务场景的多样,同一个短语在不同的业务、不同的语境下,其语义可能会不一样,期望分词的结果也不一样。为此,OpenSearch除了提供面向通用领域的基础分析器外,还提供了面向特定领域的分析器,如面向电商领域的电商分析器等。

为了更好的满足用户的业务需求,OpenSearch可以让用户在系统提供的基础分析器的基础上,通过结合干预词条的形式创建自定义分析器。在应用的索引字段的分析器中选择使用相应的分析器,以达到干预索引和查询时分词结果,确保搜索结果的质量。

词条干预

可以通过“二次分词”的功能管理干预词条。

开启二次分词表示用户自定义分词后,还会再次切分自定义分词结果;关闭二次分词则保留用户自定义的分词结果。

以词条“开放搜索”,分析器为“中文通用”为例,开启二次分词的结果是:

分析结果显示“开放搜索”被切分为开放搜索两个词条。

关闭二次分词的结果:

分析结果显示“开放搜索”保持为一个完整词条开放搜索,未被进一步切分。

注意事项

  • 自定义分析器的词条是该分析器中分析器类型里的分析器的全部词条和手动添加的词条的总和,并且手动干预的词条优先级高于默认分析器的词条;

  • 新控制台自定义分析器的个数最多为20个;

  • 单个自定义分词器最多能包含1000个干预词条;

  • 每个词条中,key为不超过10个字符,value为不超过32个字符;1个字符为1个汉字或1个英文字母;

  • 词条内容中不能包含大写字母(A-Z),全角符号(\uff01 - \uff5e),中文标点符号;

  • 语义切分干预词条中,keyvalue在去掉空格后,内容需相同;示例如下:

    不正确的词条=>错误 的 词条
    正确的词条=>正确 的 词条

    1个词条中,keyvalue去掉空格后,内容不一致,因此是不符合规范的词条。

  • key中不能包含有空格;示例如下:

    不正确 词条=>不 正确 词条
    正确词条=>正确 词条

    1个词条,key中包含了空格(“ “),因此是不符合规范的词条。

  • key的内容不能为同一个干预词典中其他词条value中的一部分;示例如下:

    自定义分词器=>自定义 分词器
    分词器
    分词

    2个词条的key的内容“分词器”,是第1个词条value中的一部分,因此第2个词条是不符合规范的。但第3条词条是符合规范的。

流程演示

流程简述

创建自定义分析器 —— 线下变更 —— 索引重建 —— 自定义分词器效果展示

操作步骤

1.在开放搜索控制台主页左侧导航栏找到“搜索算法中心”,选择“召回配置”,找到“分析器管理”,单击创建

2.创建分析器,定义分析名称,选择分析器类型:

在弹出的对话框中,分析器类型可选择系统内置分析器定制模型分析器,并在分析器下拉列表中选择具体的分析器(如中文 - 通用分析)。

3.添加干预词条,输入query,和分词结果,这里以“糯米”为例,并选择二次分词:

词条管理页面单击添加按钮,在新增干预词条对话框中输入Query分词结果,开启二次分词开关后单击保存注意:分词用空格隔开。例:“糯米” ==> “糯 米”。

4.进行分词测试,测试分词器生效后干预词条的结果:

分析器管理页面的分析器列表中,找到目标自定义分析器,单击其操作列中的分词测试

  • 4.1.在测试文本中输入“糯米”。

使用test_zw分析器测试后,分析结果显示“糯米”被切分为两个词条。

  • 4.2.多个自定义分析分词结果对比。

对比结果显示,test_zw将“糯米”切分为,而kevintest2保持糯米为一个完整词条。

5.分词效果测试后,回到“召回配置”下的“基本配置”,对线上应用进行变更:

分词配置区域,单击线下变更按钮。

:此处的“线下变更”,是根据用户当前的配置生成一个线下应用,线上应用不受影响。

6.在应用字段列表,分析方式一列中,给对应的索引选择自定义分析器。

7.等待索引重建后,即可生效。

自定义分析器效果展示

以“糯米”的文档内容为例,当使用“中文——通用分词时” 与预期不符(搜索“米”无法将带有“糯米、小米、大米”的文档召回)。按上述流程添加“test_zw”自定义分词器,并修改应用结构,索引重建后,拆分的term与干预后一致。

注意事项

  • 目前新控制台可对已创建的自定义分析器可进行词条添加,若已创建的自定义分析器已经被应用引用,则期间再次添加词条,需要进行索引重建后才会生效;如想及时生效,需要对分词有bad case的文档进行重新更新,以触发对新增干预词条的索引重建。

  • 自定义分析器的Query长度不得超过10个字符。

  • 自定义分析器的Query不允许包含大写字母,全角符号,中文标点。

  • 自定义分词结果不允许包含大写字母,全角符号,中文标点。

  • 当关闭二次分词开关后,则严格遵从用户的干预结果设置,不再进行进一步分词,反之,允许基于客户的干预结果后进行进一步分词。

  • 自定义分词器类型“行业-电商通用分析器”需要版本类型为“行业增强版”的应用才可以配置使用。

  • 已被应用引用的自定义分析器,无法删除。