oracle 自定义分词器,自定义分词器和自定义词典
自定义词典
全文检索功能在构建索引和查询时,都需要对文档或待查询语句进行分词,分词结果直接影响索引构建及查询结果。AliNLP在大部分场景下可以得到理想的分词结果,但在一些特定的场景下,分词结果会造成查询结果差异,并不能满足业务实际需求,自定义词典提供的灵活扩充词库能力,可以很好的解决这个问题。
AnalyticDB MySQL版 3.0的全文检索支持自定义词典,您可以对词典表进行增加和删除以达到维护词典的目的,也可以按需创建多张词典表,以达到不同的应用场景使用不同词典的目的。
创建自定义词典表
AnalyticDB MySQL版 3.0中,具体的创建语法如下:CREATE TABLE `ext_dict` (
`value` varchar(255) NOT NULL COMMENT '扩展词/停止词值',
`type` varchar(4) NOT NULL DEFAULT 'main' COMMENT 'main表示扩展词, stop表示停止词(暂不支持停止词)',
PRIMARY KEY (`value`,`type`)
) COMMENT='用户词典表'
FULLTEXT_DICT = 'Y';
约束:
词典只能有两个字段:value和type;
value和type字段都为varchar类型,并且不能为空;
词典表主键必须同时包含value和type字段;
字段解释:
value字段表示具体的词条内容;
type字段用来标记词条类型,比如扩展词和停止词,在目前的应用场景中,只有扩展词(main)是合法的,其他类型的词条可以写入,但不会生效。
AnalyticDB MySQL版对可以创建的全文词典的数量进行了限制。目前一个逻辑库可以创建一个全文词典表,一个物理库中可以创建最多十个全文词典表。
更新自定义词典
词典本身是一张表,读写操作与普通表无异,具体约束为:
词典表不允许执行Online DDL;
不支持update和truncate;
不支持禁用索引;
不支持使用全文索引、自定义词典、自定义分词器;
词典表在被其他索引使用时禁止删除。
插入一个词条:INSERT INTO ext_dict (`value`) VALUES ('浙A');
删除一个词条:DELETE FROM ext_dict WHERE `value` = '浙A' AND `type` = 'main';
一个词典默认最多允许插入1w条记录,如果需要调整插入记录数,请提交工单。
您插入或者删除词典中的词条后,词典会立刻生效,对于新写入数据表的数据,将使用自定义词典最新的词条进行分词。
使用自定义词典
创建全文索引时,可以指定全文索引使用的自定义词典,以在线创建全文索引为例:ALTER TABLE `test` ADD FULLTEXT INDEX t_idx(`title`) WITH DICT [logical_schema.]table;
使用with dict指定使用的自定义词典,指定的自定义词典必须满足以下条件:
是一个自定义词典表;
当前用户具备对应自定义词典表的SELECT权限。
自定义词典中的单个词条如果是中英文混合,例如车牌号前缀 “浙A”,在指定自定义词典时需要同时指定使用AliNLP分词器,例如:ALTER TABLE `test` ADD FULLTEXT INDEX t_idx(`title`) WITH DICT ext_dict WITH ANALYZER alinlp;
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)