最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

全文索引--自定义chinese_lexer词典

来源:动视网 责编:小采 时间:2020-11-09 14:37:58
文档

全文索引--自定义chinese_lexer词典

全文索引--自定义chinese_lexer词典:本文来详解一下如何自定义chinese_lexer此法分析器的词典 初始化数据 create table test2 (str1 varchar2(2000),str2varchar2(2000)) ; insert into test2 values(地质图,中国和反馈砀山龙卷风流口水地质图) ;insert into test2
推荐度:
导读全文索引--自定义chinese_lexer词典:本文来详解一下如何自定义chinese_lexer此法分析器的词典 初始化数据 create table test2 (str1 varchar2(2000),str2varchar2(2000)) ; insert into test2 values(地质图,中国和反馈砀山龙卷风流口水地质图) ;insert into test2


本文来详解一下如何自定义chinese_lexer此法分析器的词典 初始化数据 create table test2 (str1 varchar2(2000),str2varchar2(2000)) ; insert into test2 values(地质图,中国和反馈砀山龙卷风流口水地质图) ;insert into test2 values(图片,图) ;commit ;

本文来详解一下如何自定义chinese_lexer此法分析器的词典

初始化数据

create table test2 (str1 varchar2(2000),str2varchar2(2000)) ;
 
insert into test2
 values('地质图','中国和反馈砀山龙卷风流口水地质图') ;
insert into test2
 values('图片','图') ;
commit ;

创建此法分析器并且创建全文索引(注意词典只对chinese_lexer起作用)

exec ctx_ddl.create_preference('my_lexer1','CHINESE_LEXER');
 
EXEC ctx_ddl.create_preference('dataquery','MULTI_COLUMN_DATASTORE');
EXEC ctx_ddl.set_attribute('dataquery','columns', 'str1,str2');
 
CREATE INDEX test2_idx ON test2(str1) INDEXTYPEIS ctxsys.CONTEXT PARAMETERS('datastore dataquery LEXER my_lexer1');

看一下生成的词表,可以看到,是没有地质图这个关键字的。

ctx@STARTREK>select * from DR$TEST2_IDX$I ;
 
TOKEN_TEXT TOKEN_TYPE TOKEN_FIRST TOKEN_LAST TOKEN_COUNT
-------------------------------------------------------------------------- ----------- ---------- -----------
TOKEN_INFO
-----------------------------------------------------------------------------------------------------------------------------------------------------
STR1 0 1 2 2
0090010301900102
 
STR2 0 1 2 2
0090050B01900402
 
地质 0 1 1 1
0090020C
 
反馈 0 1 1 1
008808
 
和 0 1 1 1
008807
 
口水 0 1 1 1
00880D
 
流 0 1 1 1
00880C
 
龙卷风 0 1 1 1
00880B
 
山 0 1 1 1
00880A
 
图 0 1 2 2
0090030C018805
 
图片 0 2 2 1
008802
 
中国 0 1 1 1
008806
 
砀山 0 1 1 1
008809
 
 
已选择13行。

下面开始,使用自定义词典

C:\Users\fengjun>ctxlc -zht -ocs zhs16GBK> zhs16gbk_102.txt
 
C:\Users\fengjun>zhs16gbk_102.txt

搜索了一下文档,里面没有找到地质图这个关键词

最末尾加上地质图

生成自定义词典需要使用的三个以d、k、i结尾的文件

这里总是出错

C:\Users\fengjun>ctxlc -zht -ics zhs16gbk -izhs16gbk_102.txt
DRG-52107: ctxkbtc internal error
 
加上-n参数,顺利生成
 
C:\Users\fengjun>ctxlc -zht -ics zhs16gbk -n-i zhs16gbk_102.txt
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
DRG-52118: Writing index file for terms
DRG-52117: Writing index file for IDs
DRG-52116: Done writing all terms
DRG-52115: Writing new terms in lexicon tofiles
DRG-52114: Writing lexicon to files
 
C:\Users\fengjun>dir dr*
 驱动器 C 中的卷是Windows8_OS
 卷的序列号是6C5D-2B1F
 
 C:\Users\fengjun 的目录
 
2014/09/24 14:02 2,250,471 drold.dat
2014/09/24 14:02 391,326 droli.dat
2014/09/24 14:02 89,282 drolk.dat
2014/09/24 13:55 298,206 drolt.dat
 4 个文件 3,029,285 字节
 0 个目录 113,255,260,160 可用字节

备份$ORACLE_HOME\ctx\data\zhlx

下的内容,并且将上面的几个文件copy到$ORACLE_HOME\ctx\data\zhlx下,并且改名

d、k、i结尾的拷贝过去即可

一定记得将原来的文件备份一下。

ctx@STARTREK>drop index test2_idx force ;
 
索引已删除。
 
ctx@STARTREK>CREATE INDEX test2_idx ONtest2(str1) INDEXTYPE IS ctxsys.CONTEXT PARAMETERS('datastore dataquery LEXERmy_lexer1');
 
索引已创建。
 
ctx@STARTREK>select * from DR$TEST2_IDX$I ;
 
TOKEN_TEXT TOKEN_TYPE TOKEN_FIRST TOKEN_LAST TOKEN_COUNT
-------------------------------------------------------------------------- ----------- ---------- -----------
TOKEN_INFO
--------------------------------------------------------------------------------------------------------------------------
STR1 0 1 2 2
0090010201900102
 
STR2 0 1 2 2
0090040A01900402
 
地质图 0 1 1 1
0090020B
 
反馈 0 1 1 1
008807
 
和 0 1 1 1
008806
 
口水 0 1 1 1
00880C
 
流 0 1 1 1
00880B
 
龙卷风 0 1 1 1
00880A
 
山 0 1 1 1
008809
 
图 0 2 2 1
008805
 
图片 0 2 2 1
008802
 
中国 0 1 1 1
008805
 
砀山 0 1 1 1
008808
 
 
已选择13行。

可以看到已经有地质图这个关键字了。

这样自定义词典就完成了,对于大数据量的检索,自定义词典还是非常有意义的。

下面是一个相关的简单测试

未加关键词之前

SQL> select count(0) from data_query t wherecontains(MDTITILE,'xxxx万地质图')>0;

COUNT(0)

----------

7072

已用时间: 00: 00: 01.54

执行计划

----------------------------------------------------------

Plan hash value: 670767155

--------------------------------------------------------------------------------

---

| Id |Operation | Name | Rows | Bytes | Cost (%CPU)| Time

|

--------------------------------------------------------------------------------

---

| 0 |SELECT STATEMENT | | 1 | 85 | 4 (0)| 00:00:0

1 |

| 1| SORT AGGREGATE | | 1 | 85 | |

|

|* 2| DOMAIN INDEX | DATA_QUERY_IDX | 164 | 13940 | 4 (0)| 00:00:0

1 |

--------------------------------------------------------------------------------

---

Predicate Information (identified by operationid):

--------------------------------------------------

2 - access("CTXSYS"."CONTAINS"("MDTITILE",'xxxx万地质图')>0)

统计信息

----------------------------------------------------------

3528 recursive calls

0 db block gets

10214 consistent gets

1173 physical reads

2824 redo size

535 bytes sent via SQL*Net to client

524 bytes received via SQL*Netfrom client

2 SQL*Net roundtrips to/fromclient

263 sorts (memory)

0 sorts (disk)

1 rows processed

加关键词之后

SQL> select count(0) from data_query t wherecontains(MDTITILE,'xxxx万地质图')>0 ;

COUNT(0)

----------

7072

已用时间: 00: 00: 00.28

执行计划

----------------------------------------------------------

Plan hash value: 670767155

-------------------------------------------------------------------------------

---

| Id |Operation | Name | Rows | Bytes | Cost (%CPU)| Time

|

--------------------------------------------------------------------------------

---

| 0 |SELECT STATEMENT | | 1 | 85 | 4 (0)| 00:00:0

1 |

| 1| SORT AGGREGATE | | 1 | 85 | |

|

|* 2| DOMAIN INDEX | DATA_QUERY_IDX | 164 | 13940 | 4 (0)| 00:00:0

1 |

--------------------------------------------------------------------------------

---

Predicate Information (identified by operationid):

---------------------------------------------------

2 -access("CTXSYS"."CONTAINS"("MDTITILE",'xxxx万地质图')>0)

统计信息

----------------------------------------------------------

643 recursive calls

0 db block gets

2438 consistent gets

34 physical reads

0 redo size

535 bytes sent via SQL*Net toclient

524 bytes received via SQL*Netfrom client

2 SQL*Net roundtrips to/fromclient

34 sorts (memory)

0 sorts (disk)

1 rows processed

文档

全文索引--自定义chinese_lexer词典

全文索引--自定义chinese_lexer词典:本文来详解一下如何自定义chinese_lexer此法分析器的词典 初始化数据 create table test2 (str1 varchar2(2000),str2varchar2(2000)) ; insert into test2 values(地质图,中国和反馈砀山龙卷风流口水地质图) ;insert into test2
推荐度:
标签: 自定义 全文 词典
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top