• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

全文索引–两种中文词法分析器比较(chinese_vgram_lexerchinese_

mysql 搞代码 4年前 (2022-01-09) 32次浏览 已收录 0个评论

首先让我们进行一个关于中文词法分析器的比较,测试过程如下: 建表 create table test (str varchar2(100)) ;create table test1(str varchar2(100)) ; 插入数据 insert into test values (中华人员共和国) ;insert into test1values (中华人员共和国) ; 创

首先让我们进行一个关于中文词法分析器的比较,测试过程如下:

建表

create table test (str varchar2(100)) ;create table test1(str varchar2(100)) ;

插入数据

insert into test values (‘中华人员共和国’) ;insert into test1values (‘中华人员共和国’) ;

创建两个关于中文的分析器

exec ctx_ddl.create_preference('my_lexer','CHINESE_VGRAM_LEXER') ;exec ctx_ddl.create_preference('my_lexer1','CHINESE_LEXER') ;

创建全文索引

CREATE INDEX test1_idx ON test1(str) INDEXTYPE IS ctxsys.CONTEXT PARAMETERS('LEXER my_lexer1');CREATE INDEX test_idx ON test(str) INDEXTYPE IS ctxsys.CONTEXT PARAMETERS('LEXER my_lexer');

查看全文索引生成的词表

chinese_vgram_lexer

dexter@STARTREK>select * from DR$TEST_IDX$I ;TOKEN_TEXT TOKEN_TYPE TOKEN_FIRST TOKEN_LAST TOKEN_COUNT------------------------------------------------------------<p>本文来源gao!daima.com搞$代!码#网#</p>---- ---------- ----------- ---------- -----------TOKEN_INFO------------------------------------------------------------------------------------------------------------------------------------------------------共和 0 1 1 1008805国 0 1 1 1008807和国 0 1 1 1008806华人 0 1 1 1008802人员 0 1 1 1008803员共 0 1 1 1008804中华 0 1 1 1008801

chinese_lexer

dexter@STARTREK>select * from DR$TEST1_IDX$I ;TOKEN_TEXT TOKEN_TYPE TOKEN_FIRST TOKEN_LAST TOKEN_COUNT---------------------------------------------------------------- ---------- ----------- ---------- -----------TOKEN_INFO----------------------------------------------------------------------------------------------------------------------------共和国 0 1 1 1008803人员 0 1 1 1008802中华 0 1 1 1008801

分词效果:

分词效果:

chinese_ lexer

chinese_vgram_lexer

共和国

共和

人员

中华

和国

华人

人员

员共

中华

对于chinese_vgram_lexer来说,官方文档有这样的描述:

The CHINESE_VGRAM_LEXER type identifies tokens in Chinese text for creating Text indexes.

通过实验证明,其实就是按照相邻两个字来创建全文索引,对于我们正常的国内使用习惯来说明显是不适用的。

而对于chinese_ lexer来说,明显人性化了许多:

The CHINESE_LEXER type identifies tokens in traditional and simplified Chinese text for creating Oracle Text indexes.

通过实验证明,已经有了优化,没有生成过多的词表,这对于全文索引的优化来说是比较有意义的。并且chinese_lexer还允许自定义词表,通过屏蔽词,以及自定义词表可以进一步的加速全文索引的检索速度。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:全文索引–两种中文词法分析器比较(chinese_vgram_lexerchinese_

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址