oracle全文索引的简单配置

1. 创建数据存储定义(Datastore),使用多列数据存储在多列上创建全文索引
BEGIN
     CTX_DDL.CREATE_PREFERENCE('INFOGRID_COM_DATASTORE','MULTI_COLUMN_DATASTORE');
CTX_DDL.SET_ATTRIBUTE('INFOGRID_COM_DATASTORE','columns','NAME,ADDRESS,BUSINESS_ZONE,FAREN,FUND,INTRODUCTION');
END;

2.创建词法分析器(Lexer)
BEGIN
    CTX_DDL.CREATE_PREFERENCE('INFOGRID_LEXER', 'CHINESE_LEXER');
END;

3.创建全文索引(索引在DML提交后自动同步更新)
CREATE INDEX INFOGRID_COM_FULL_IDX ON g2b_com(NAME)
INDEXTYPE  IS  CTXSYS.CONTEXT
PARAMETERS (
   'LEXER INFOGRID_LEXER
    DATASTORE INFOGRID_COM_DATASTORE
    SYNC (ON COMMIT)' --使用实时同步(DML提交时同步全文索引)
)
--手工同步索引(如果使用自动同步,这步可省略)
begin
ctx_ddl.sync_index('INFOGRID_COM_FULL_IDX');
end;

4.使用全文索引查询(按照出现频率排序)
select score(0),t.* from g2b_com t where contains(NAME,'条件一,条件二',0)>0 order by score(0) desc

5.删除全文索引(删除词法分析器,删除数据存储定义,删除索引)
begin
ctx_ddl.drop_preference('INFOGRID_COM_DATASTORE');--删除数据储存定义DataStore
ctx_ddl.drop_preference('INFOGRID_LEXER');--删除词法分析器
end;
drop index INFOGRID_COM_FULL_IDX;--删除索引
-------------------------------------------------------------------------------------------------------------------

--查看DB中是否存在CTXSYS用戶
select * from all_users where username='CTXSYS'
--查詢CTXSYS具有的角色,是否包含CTXAPP角色
select grantee,granted_role from DBA_role_privs where grantee='CTXSYS'
--激活CTXSYS用戶
alter user CTXSYS account unlock  
--創建測試用戶TEXTTEST
create user TEXTTEST identified by TEXTTEST
--修改CTXSYS密碼
alter user CTXSYS identified by CTXSYS

--授權
GRANT resource, CONNECT, ctxapp TO TEXTTEST
GRANT EXECUTE ON ctxsys.ctx_cls TO TEXTTEST
GRANT EXECUTE ON ctxsys.ctx_ddl TO TEXTTEST
GRANT EXECUTE ON ctxsys.ctx_doc TO TEXTTEST
GRANT EXECUTE ON ctxsys.ctx_output TO TEXTTEST
GRANT EXECUTE ON ctxsys.ctx_query TO TEXTTEST
GRANT EXECUTE ON ctxsys.ctx_report TO TEXTTEST
GRANT EXECUTE ON ctxsys.ctx_thes TO TEXTTEST
GRANT EXECUTE ON ctxsys.ctx_ulexer TO TEXTTEST

--设置词法分析器
BEGIN
ctx_ddl.create_preference ('oratext_lexer', 'chinese_vgram_lexer');
END;

SELECT pre_name, pre_object FROM ctx_preferences

create table TEXT_SEARCH(
id NUMBER NOT NULL PRIMARY KEY,   
ABSTRACT varchar2(2000));

insert into TEXT_SEARCH values(1,'《HTML5高级程序设计》首先介绍了HTML5的历史背景、新的语义标签及与以往HTML版本相比的根本变化,同时揭示了HTML5背后的设计原理。从第2章起,分别围绕构建令人神往的富Web应用,逐一讨论了HTML5的Canvas、Geolocation、Communication、WebSocket、Forms、Web Workers、Storage等API的使用,辅以直观明了的客户端和服务器端示例代码,让开发人员能够迅速理解和掌握新一代Web标准所涵盖的核心技术。《HTML5高级程序设计》最后探索了离线Web应用并展望了HTML5未来的发展前景。   《HTML5高级程序设计》面向有一定经验的Web应用开发人员,对HTML5及未来Web应用技术发展抱有浓厚兴趣的读者也可以学习参考。');

insert into TEXT_SEARCH values(2,'《软件架构师应该知道的97件事》是本与众不同的技术图书。五十多位作者中不乏像尼尔·福特(Neal Ford)、迈克尔·尼加德(Michael Nygard)、比尔·德·霍拉(Bill de h6ra)这样杰出的软件架构师,大家分享了多年积累的开发经验和工作准则.内容不限于单纯的技术范畴.还涉及如何与各方沟通、如何降低项目的复杂度、怎样强化开发团队等。');


drop index demo_abstract
CREATE INDEX demo_abstract ON TEXTTEST.TEXT_SEARCH(ABSTRACT) indextype IS ctxsys.context parameters('lexer ORATEXT_LEXER');
标签: 暂无标签
李波Joker

写了 46 篇文章,拥有财富 503,被 8 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P4 | 发表于 2016-4-20 09:06:31
感谢分享!
很感谢!
感谢!
重要的事情说三遍!
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈