Oracle全文检索实现

 1 ----1 准备工作 解锁ctxsys用户并授权-----
 2
 3 --解锁ctxsys
 4 alter user ctxsys account unlock;
 5 --修改ctxsys密码(如果ctxsys用户过期了的话,需要重新设置一下密码)
 6 alter user ctxsys identified by ctxsys;
 7
 8 --授予权限给oa这个用户--oa可以改为实际使用的用户
 9 grant execute on ctx_ddl to oa;
10
11
12 ----2 准备工作 创建分析器、分词器、过滤词组-----
13 --创建分析器
14 exec ctx_ddl.create_preference (‘my_lexer‘, ‘chinese_vgram_lexer‘);
15 --创建切词器
16 exec CTX_DDL.CREATE_POLICY(‘MY_POLICY‘, LEXER => ‘my_lexer‘);
17 --创建分词器(函数)
18 create or replace function p_split_chinese(p_input in varchar2)
19 return varchar2 as
20 v_tab CTX_DOC.TOKEN_TAB;
21 v_return VARCHAR2(32767);
22 begin
23 CTX_DOC.POLICY_TOKENS(‘my_policy‘,p_input,v_tab);
24 for i in 1..v_tab.count loop
25 v_return := v_return || ‘,‘ || v_tab(i).token;
26 end loop;
27 return LTRIM(v_return,‘,‘);
28 end;
29 /
30 --测试函数p_split_chinese
31 select p_split_chinese(‘中国重庆‘) from dual;
32
33 -- 创建过滤词组
34 exec ctx_ddl.create_stoplist(‘my_stoplist‘);
35 --往my_stoplist中加入要过滤的词,这些词将不会参加搜索
36 exec ctx_ddl.add_stopword(‘my_stoplist‘,‘有限公司‘);
37
38
39
40
41 -----3 创建索引(使用前面创建的分词器、过虑词组)-----
42 create index MY_TEST_INDEX on Test_Table(Text) indextype is CTXSYS.CONTEXT parameters(‘lexer my_lexer stoplist my_stoplist‘);
43
44
45 ----4、查询(使用索引)-----
46 --不使用分词器(rownum<=1000这个限制根据实际情况调整)
47 select score(1),t.* from Test_Table t where contains(Text,‘系统管理员‘,1)>0 and rownum<=1000 order by score(1) desc;
48 --使用分词器(rownum<=1000这个限制根据实际情况调整)
49 select score(1),t.* from Test_Table t where contains(Text,p_split_chinese(‘系统管理员‘),1)>0 and rownum<=1000 order by score(1) desc;
50
51
52
53 ----5、索引维护----
54 --同步索引(有新增数据或者修改数据后要重新执行此条语句,否则新的数据不会参与搜索)
55 exec ctx_ddl.sync_index(‘MY_TEST_INDEX‘);
56 --优化索引
57 exec ctx_ddl.optimize_index(‘MY_TEST_INDEX‘,‘full‘);
58
59  
时间: 2024-10-04 11:15:54

Oracle全文检索实现的相关文章

oracle 全文检索

一.使用 sys 用户登录oracle (1)运行—cmd—sqlplus — sys/密码 @连接字符 as sysdba 二.授权 1.grant ctxapp to 全文检索使用用户: 2.grant execute on ctx_dll to 全文检索使用用户: 3.全文检索使用用户 登录oracle 可以通过 pl/sql 界面登录:以下操作都是在pl/sql 界面操作. 三.创建分析器 BEGIN  --设置词法分析器 名称:'oratext_lexer',类型:'chinese_v

oracle全文检索

转载自:http://blog.sina.com.cn/s/blog_613fee860100yhyz.html 1.需要对ctxsys用户解锁,以获得ctx_ddl包的操作权.进入system用户,输入如下命令,解锁ctxsys用户alter user ctxsys account unlock;然后将ctx_ddl包的操作权限赋给ctfs用户.也是在system用户下,输入如下命令,赋予目标用户ctx_ddl包操作权限grant execute on ctx_ddl to ctfs;至此,准

oracle 全文检索创建脚本示例

--创建全文索引 grant execute on ctx_ddl to username;--使用其他帐号对username授权exec ctx_ddl.create_preference('my_lexer','chinese_lexer');--创建chinese_lexer词法器(中文词法分析器)exec ctx_ddl.create_preference('my_filter','CHARSET_FILTER');--创建字符过滤器exec ctx_ddl.set_attribute(

oracle全文检索笔记

1.删除词法解析器 exec ctx_ddl.drop_preference('my_lexer'); 2.创建中文词法解析器 exec ctx_ddl.create_preference ('my_lexer', 'chinese_vgram_lexer'); 3.创建全文索引,多字段 EXEC ctx_ddl.create_preference('ctx_idx_jdw_person_pref','MULTI_COLUMN_DATASTORE'); EXEC ctx_ddl.set_attr

全文检索- Oracle/MySql/达梦

简单使用语法: MySql: ALTER TABLE dataset_ods ENGINE = MyISAM; ALTER TABLE dataset_ods ADD FULLTEXT (abstract); SELECT * FROM dataset_ods WHERE MATCH(abstract) AGAINST('XX'); Oracle: CREATE INDEX FullTextIndex_dataset_ods ON dataset_ods( ABSTRACT ) INDEXTYP

oracle仿全文检索切词机制实现文本信息相似度查找

应用场景: 根据关键字查询与此关键字相似的信息,其中一些关键字要排除掉例如:"有限公司"."有限责任公司"."股份有限公司"等,需要创建一个排除词库表: 第一步:词库表 第二部:创建函数p_split_keyword 第三部:关键字处理 第四部:测试 select * from (select '河北沧州东塑股份有限公司',name, SYS.UTL_MATCH.edit_distance_similarity('河北沧州东塑股份有限公司',na

oracle仿全文检索切词机制实现文本信息类似度查找

应用场景: 依据keyword查询与此keyword相似的信息,当中一些keyword要排除掉比如:"有限公司"."有限责任公司"."股份有限公司"等,须要创建一个排除词库表: 第一步:词库表 第二部:创建函数p_split_keyword 第三部:keyword处理 第四部:測试 select * from (select '河北沧州东塑股份有限公司',name, SYS.UTL_MATCH.edit_distance_similarity('

java后台框架 springmvc mybatis(sqlsever oracle 和 mysql数据库)

获取[下载地址]   QQ: 313596790   [免费支持更新]支持三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]A 代码生成器(开发利器);      增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid

springmvc4 mybatis 整合 框架源码 bootstrap html5 mysql oracle sqlsever spring SSM

获取[下载地址]   QQ: 313596790   [免费支持更新] 三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; QQ:313596790 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块 B 集成阿里巴巴数据库连