博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Oracle全文检索学习(一)

Posted on 2007-06-01 19:34  张冰  阅读(602)  评论(0编辑  收藏  举报

操作系统:windows xp
Oracle 10g  10.2
内存:512M
数据库全装: 必须要用CTXSYS用户.
以下是建立最简单支持英文的全文检索
--删除text用户
Drop User text;

-- 创建text用户
create user text
  identified by text
  default tablespace USERS
  temporary tablespace TEMP;
-- Grant/Revoke role privileges
grant resource to text with admin option;
grant connect to text with admin option;


--将CTXAPP用户的权限赋予TEXT用,
Grant CTXAPP  to  text  with  Admin  Option;


--将HR用户下的EMPLOREE表和数据拷贝到text用户下
 
--建立一个preference:( ----设置搜索器类型) 
BEGIN
ctx_ddl.create_preference ('main_lexer', 'chinese_lexer');
ctx_ddl.create_preference('mywordlist', 'BASIC_WORDLIST');
ctx_ddl.set_attribute('mywordlist','PREFIX_INDEX','TRUE');
ctx_ddl.set_attribute('mywordlist','PREFIX_MIN_LENGTH',1);
ctx_ddl.set_attribute('mywordlist','PREFIX_MAX_LENGTH', 5);
ctx_ddl.set_attribute('mywordlist','SUBSTRING_INDEX', 'YES');

END;


--释放preference
BEGIN
ctx_ddl.drop_preference ('main_lexer');
ctx_ddl.drop_preference ('mywordlist');
END;

--浏览自己创造的preference
SELECT * FROM ctx_user_preferences ;

--创建索引
Drop Index myindex;

--如果不显示的指定索引参数,系统会自动探测文本语言,数据类型和文档格式
CREATE INDEX myindex ON EMPLOREE(first_name) INDEXTYPE IS CTXSYS.Context;


/*如上命令建立了一个默认参数的CONTEXT索引myindex.系统默认:
1. 文本存储在数据库中。可以是CLOB, BLOB, BFILE, VARCHAR2, or CHAR类型的文本数据。
2. 文本列语言是数据库建立时的默认的字符集。
3. 使用数据库默认的终止目录stoplist.stoplist记录存在于文本列中但不对其索引的词。
4. 允许模糊查询。模糊查询阐述用%表示*/

select * from EMPLOREE where contains(first_name,'D%A%') >0;