本文来具体解释一下怎样自己定义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');

看一下生成的词表。能够看到。是没有地质图这个keyword的。

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行。

能够看到已经有地质图这个keyword了。

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

以下是一个相关的简单測试

未加关键词之前

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

相关官方文档位置:

Oracle® Text Reference

http://docs.oracle.com/cd/E11882_01/text.112/e24436/cexec.htm#CCREF2202

全文索引--自己定义chinese_lexer词典的更多相关文章

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

    全文索引它的数据字典本来就是自己加密过的数据格式,只有翻译过来了,才可以修改.这样修改后再生成它自己的数据格式文件,覆盖掉原来的,就会将新添加的关键词加入进去了!! 以下操作是在Oracle服务器安装 ...

  2. IK-Analyzer(5.3.1)动态配置自定义词典

    参考文献:http://blog.csdn.net/fatpanda/article/details/37911079 jar包: IK-Analyzer-extra-5.3.1.jar IKAnal ...

  3. Forth 采用CODE定义新词

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  4. 词典(一) 跳转表(Skip table)

    词典,顾名思义,就是通过关键码来查询的结构.二叉搜索树也可以作为词典,不过各种BST,如AVL树.B-树.红黑树.伸展树,结构和操作比较复杂,而且理论上插入和删除都需要O(logn)的复杂度. 在词典 ...

  5. 转 Oracle全文检索http://docs.oracle.com/cd/E11882_01/text.112/e24436/toc.htm

    SQL > exec ctx_ddl.create_preference ('my_test_lexer','chinese_lexer') : PL/SQL 过程成功完成 SQL > E ...

  6. 安装sphinx和coreseek

    sphinx简介 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能.Sphinx可以非常容易的与SQL数 ...

  7. Mysql学习笔记(八)索引

    PS:把昨天的学习内容补上...发一下昨天学的东西....五月三日...继续学习数据库... 学习内容: 索引.... 索引的优点: 1.通过创建唯一索引,可以保证数据库每行数据的唯一性... 2.使 ...

  8. iOS 学习笔记 一 (2015.02.05)

    一:Xcode6输入框设置为 keyboard type设置为Number Pad弹不出键盘的解决办法   问题:Can't find keyplane that supports type 4 fo ...

  9. cocos2d-x 2.0 序列帧动画 深入分析

    转自:http://blog.csdn.net/honghaier/article/details/8222401 序列帧动画主要有几个类: CCSpriteFrame:精灵帧信息,序列帧动画是依靠多 ...

随机推荐

  1. python基础-异常和模块

    异常的定义 #encoding=utf-8 import sys try: 1/0 print "never executed!" except ZeroDivisionError ...

  2. 【工具】Homebrew的安装及使用

    Homebrew官网:http://brew.sh/index_zh-cn.html Homebrew是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,相当于linux下的a ...

  3. 【转】Python3学习笔记(urllib模块的使用)

    原文地址:https://www.cnblogs.com/Lands-ljk/p/5447127.html 1.基本方法 urllib.request.urlopen(url, data=None,  ...

  4. RAC+单节点搭建DG

    primary RAC to single standby 参考文献:RAC+单实例DATAGUARD 配置   http://blog.csdn.net/miyatang/article/detai ...

  5. 12.jsp概述及指令

    JSP全名是Java Server Page,它是建立在Servlet规范之上的动态网页开发技术.在JSP文件中,HTML代码与Java代码共同存在.Html代码用来实现网页中静态内容的显示,Java ...

  6. 【2018.11.23】2018WCTest(8)

    T1 小 $X$ 无敌就是指他的防御 $\ge$ 怪物的攻击 $n$.另外小 $X$ 最多只需要把攻击加到怪物的防御 $k$,此时已经能一招秒一个,再多加必定无用且需承受更多伤害. $20$ 分 $d ...

  7. 【前端学习笔记】ajax与php之间的互动

    ajax通常会牵扯到跨域问题,所以我们通常的解决方案是,通过ajax将参数传到后台php文件中 在后台通过php文件进行跨域访问api,再将结果返回到ajax响应中.需要注意一下几点: 1.可以通过& ...

  8. Selenium之Web页面滚动条滚操作

    //移动到元素element对象的“顶端”与当前窗口的“顶部”对齐 ((JavascriptExecutor) driver).executeScript("arguments[0].scr ...

  9. 解决centos7中ens33中不显示IP等问题

    在虚拟机中安装centos7,输入ifconfig显示command not found.在sbin目录中发现没有ifconfig文件,这是因为centos7已经不使用 ifconfig命令了,已经用 ...

  10. EC++学习笔记(一) 习惯c++

    条款01:c++多范式编程语言 条款02:尽量以 const, enum, inline 替换#define 1. 提供类型安全检查 2. 去除函数调用开销 3. 避免宏的二义性 const doub ...