免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3646 | 回复: 4
打印 上一主题 下一主题

请问有人用过ORACLE的全文索引,ORACLE TEXT么 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-15 10:27 |只看该作者 |倒序浏览
我在SLACKWARE10上安装的ORACLE9206
对一个表的两个字段应用全文索引,其中一个字段是VARCHAR,一个字段是CLOB,当数据量比较小的是否,创建索引都没有问题,当数据量比较大的时候,比如10万的时候,创建索引字段较小的VARCHAR也没有什么问题,但是类型为CLOB的还是会出错。相关信息如下:

CREATE INDEX testcommentindex ON messagetest( messagecomment ) INDEXTYPE IS ctxsys.CONTEXT  PARAMETERS('lexer my_lexer');

ERROR at line 1:
ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-20000: Oracle Text error:
ORA-04030: out of process memory when trying to allocate 66840 bytes (Heap for
lexic,gxlGetMem:memory)
ORA-06512: at "CTXSYS.DRUE", line 157
ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 204

在创建过程中,用如下语句查看内存的使用:
select    max(pga_used_mem) max_pga_used_mem , max(pga_alloc_mem) max_pga_alloc_mem  , max(pga_max_mem) max_pga_max_mem from v$process;

发现创建索引的进程占用内存,快速增长到2.6G左右,最后出现上面的错误信息后,崩掉了。
查了很多的资料,也尝试调整了一些比如:SORT_AREA_SIZE、PGA参数等,都没有效果。
已经找了一周了,都没找到问题所在。哪位仁兄能给点建议和意见。

论坛徽章:
0
2 [报告]
发表于 2007-01-15 10:30 |只看该作者

自己顶下吧

郁闷死了,还有要补充的是:
最初的时候数据不大,我已经创建成功了,当时是每天有一些增量的数据进入系统,然后我用:
ctx_ddl.sync_index ('testcommentindex', '30M');
语句进行全文索引的同步,系统到现在一直正常。

但是如果完全重新建立就会导致我前面说的问题。
咳,郁闷,help!!!!!!!!!!

论坛徽章:
0
3 [报告]
发表于 2007-01-17 15:04 |只看该作者

虽然可能这个帖子没人理了,但是我还是想把他补充完整

等了很长时间,又找了很多资料,但是没有回复,也没有好的信息,但是昨天偶然尝试了一下,竟然有意外收获,虽然可能这个帖子没人理了,但是我还是想把他补充完整。
以前出错前,我是用chinese_lexer做我的词法分析器,因为虽然它只支持UTF8字符集,但是据说能提供较好的效果。
execute   ctx_ddl.create_preference ('my_lexer', 'chinese_lexer');
CREATE INDEX testcommentindex ON messagetest( messagecomment ) INDEXTYPE IS ctxsys.CONTEXT  PARAMETERS('lexer my_lexer');

这几天找资料的过程中,我偶然尝试用'chinese_vgram_lexer',竟然成功了
execute   ctx_ddl.create_preference ('my_lexer1', 'chinese_vgram_lexer');
CREATE INDEX testcommentindex ON messagetest( messagecomment ) INDEXTYPE IS ctxsys.CONTEXT  PARAMETERS('lexer my_lexer1');

难道是'chinese_lexer'的bug么???????????
我继续找了些资料,没有这方面的提示,现在虽然能够用了,但是这个疑惑还是没有解决。。。。。。。。。

论坛徽章:
0
4 [报告]
发表于 2011-01-30 15:48 |只看该作者
本帖最后由 runnerpiao 于 2011-01-30 15:51 编辑

能请教一下吗,我用http://www.oracle.com/technology ... ext/files/KWIC.html中的实例,用
select s.rowid, m.file_name
from mydocs m, mydocs_shadow s
where contains (file_name,'oracle')
and s.mydocs_rowid = m.rowid;

select s.rowid, m.file_name
from mydocs m, mydocs_shadow s
where contains (TEXT_EXTRACT,'oracle')
and s.mydocs_rowid = m.rowid;
这两个查询都查找不到记录,但是用 select s.rowid, m.file_name
from mydocs m, mydocs_shadow s
where TEXT_EXTRACT like '%oracle%' 查找是有数据的,能告诉我怎么实现吗??
谢谢

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
5 [报告]
发表于 2011-01-30 21:05 |只看该作者
真能挖啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP