Oracle全文检索方面的研究(全9)(2)

来源:未知 责任编辑:责任编辑 发表时间:2013-12-22 14:57 点击:

alter index idx_auction_db1 rebuild PARAMETERS(REPLACE METADATA SYNC(ON COMMIT)) ;

3.10.8.Score:

--表示得分,分值越高,表示查到的数据越精确

SELECT SCORE(1), id, text FROM docs WHERE CONTAINS(text, oracle, 1) > 0;

--根据得分来排序

SELECT SCORE(1), title from news WHERE CONTAINS(text, oracle, 1) > 0 AND issue_date >=

(01-OCT-97)

ORDER BY SCORE(1) DESC;

 

3.10.9.分析表:

ANALYZE TABLE <table_name> COMPUTE STATISTICS;

ANALYZE TABLE <table_name> ESTIMATE STATISTICS 1000 ROWS;

ANALYZE TABLE <table_name> ESTIMATE STATISTICS 50 PERCENT;

ANALYZE TABLE <table_name> DELETE STATISTICS;

 

3.10.10.数据字典表:

查看系统默认的oracle text 参数

Select pre_name, pre_object from ctx_preferences

查询dml 操作后索引为同步

SELECT pnd_index_name, pnd_rowid, to_char(pnd_timestamp, dd-mon-yyyy hh24:mi:ss)

timestamp FROM ctx_user_pending;

查看错误记录表

select * from CTX_USER_INDEX_ERRORS

 

3.10.11.Php,Jsp 应用oracle text:

http://download.oracle.com/docs/cd/B19306_01/text.102/b14217/acase.htm

 

3.10.12.逻辑操作符:

          

 

-- or 操作符

Select id, text from docs where contains(text, city or state ) > 0;

--and 操作符

Select id, text from docs where contains(text, city and state ) > 0;

或是

Select id, text from docs where contains(text, city state ) > 0;

 

 

3.10.13.索引优化问题

--先看个例子

SQL> exec ctx_ddl.optimize_index(idx_auction_db1,FULL);

PL/SQL procedure successfully completed.

Elapsed: 00:16:16.77

索引优化相当的慢,200 万的数据建立context 索引需要不到5 分钟,而优化索引居然要16 分钟,这么慢

的优化速度对一个具有几亿表的数据是很难接受的的。刚开始我以为这是oracle 的一个bug,后来查到了

一些文档。Oracle10g 引进了rebuild 优化参数,速度还是很快的。

SQL> exec ctx_ddl.optimize_index(idx_auction_db1,rebuild) ;

PL/SQL procedure successfully completed.

 

 

3.10.14 事务查询

索引可能不是实时进行同步的,但是查询又要求实时的。

--更改索引为事务性,查询再找索引时还会dr$unindexed 表,把满足条件还未索引的记录找出来

alter index idx_auction_db1 rebuild parameters(replace metadata transactional)

例子:

select count(*) from table where contains(text, someword) > 0; -- 0 hits

insert into table values (someword);

select count(*) from table where contains(text, someword) > 0; -- 1 hit (the one we just

entered)

rollback;

select count(*) from table where contains(text, someword) > 0; -- 0 hit

仅仅是对某个session 启用

exec ctx_query.disable_transactional_query := TRUE;

 

 

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Table函数使用简介
  • Oracle数据库Constraint约束的常用操作及异常处理
  • Bulk Collect性能分析(zz)
  • export/import的使用
  • OCP043第十五讲 Database Security
  • ORACLE10gr2数据导入MySQL方案
  • oracle 让sys用户可以使用isqlplus
  • 在oracle数据库下使用iSQL*Plus DBA访问数据库
  • Oracle行列转换小结
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1