ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » Oracle开发 » 全文检索 无法建立索引

标题: 全文检索 无法建立索引
离线 iblog
初级会员



精华贴数 0
个人空间 0
技术积分 24 (48239)
社区积分 0 (991325)
注册日期 2006-6-15
论坛徽章:0
      
      

发表于 2008-8-6 13:16 
全文检索 无法建立索引

最近在使用oracle的全文检索功能,但数据量稍大的情况下无法建立索引,请大家帮助。
具体如下:
oracle 版本:10.2.0.1.0
操作系统版本: xp professional
cpu: P4 2.66
内存:1GB

表结构:
CREATE TABLE HR_USER
(
  TESTID      NUMBER(19)                        NOT NULL,
  TESTDATE    DATE                              NOT NULL,
  TESTSTRING  VARCHAR2(4000 BYTE)               NOT NULL
)
PRIMARY KEY  (TESTID)
希望对TESTSTRING进行全文检索

主要步骤如下:
1)指定了一个分析器
BEGIN
ctx_ddl.create_preference('c_lexer', 'CHINESE_LEXER');
END;
2)create index index1 on HR_USER(TESTSTRING) indextype is ctxsys.context parameters('lexer c_lexer');
运行到这一步时,如果HR_USER中有6000条记录,建立索引两分钟就完成了。
但是如果HR_USER中有10万条记录,建立索引一直不能完成,最后系统PF使用量到达2.2~2.3G,几个小时之后sqlplus中命令也没有返回结果。

有些帖子说这个参数sort_area_size可以提高效率,因此把sort_area_size和sort_area_retained_size都改成1.7M大小了。

也看了一些帖子,还是没解决问题,请大家帮忙看看。


只看该作者    顶部
在线/呼叫 zhouwf0726
版主


精华贴数 5
个人空间 903
技术积分 7417 (172)
社区积分 104 (3374)
注册日期 2006-2-22
论坛徽章:19
现任管理团队成员ITPUB北京九华山庄2008年会纪念徽章管理团队2007贡献徽章蓝锆石授权会员2008北京奥运纪念徽章:蹦床
2008北京奥运纪念徽章:举重2008北京奥运纪念徽章:篮球BLOG每日发帖之星生肖徽章2007版:龙生肖徽章2007版:猴生肖徽章2007版:鸡

发表于 2008-8-6 16:39 
SQL> begin
  2  for i in 1..100000 loop
  3  insert into hr_user values(i,sysdate,i||' '||i);
  4  end loop;
  5  end;
  6  /

PL/SQL 过程已成功完成。

SQL> commit;

SQL> create index index1 on HR_USER(TESTSTRING) indextype is ctxsys.context para
meters('lexer c_lexer');

索引已创建。

创建索引过程大约需要3分钟!



SQL> select * from hr_user where contains(teststring,'1000')>0;

    TESTID TESTDATE       TESTSTRING
---------- -------------- --------------------
      1000 06-8月 -08     1000 1000

SQL> select * from hr_user where contains(teststring,'10000')>0;

    TESTID TESTDATE       TESTSTRING
---------- -------------- --------------------
     10000 06-8月 -08     10000 10000

SQL> select * from hr_user where contains(teststring,'100000')>0;

    TESTID TESTDATE       TESTSTRING
---------- -------------- --------------------
    100000 06-8月 -08     100000 100000

[ 本帖最后由 zhouwf0726 于 2008-8-6 16:40 编辑 ]


__________________
msn:zhouwf0726@hotmail.commail:zhouwf0726@163.com
只看该作者    顶部
在线/呼叫 zhouwf0726
版主


精华贴数 5
个人空间 903
技术积分 7417 (172)
社区积分 104 (3374)
注册日期 2006-2-22
论坛徽章:19
现任管理团队成员ITPUB北京九华山庄2008年会纪念徽章管理团队2007贡献徽章蓝锆石授权会员2008北京奥运纪念徽章:蹦床
2008北京奥运纪念徽章:举重2008北京奥运纪念徽章:篮球BLOG每日发帖之星生肖徽章2007版:龙生肖徽章2007版:猴生肖徽章2007版:鸡

发表于 2008-8-6 16:41 
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production


__________________
msn:zhouwf0726@hotmail.commail:zhouwf0726@163.com
只看该作者    顶部
离线 iblog
初级会员



精华贴数 0
个人空间 0
技术积分 24 (48239)
社区积分 0 (991325)
注册日期 2006-6-15
论坛徽章:0
      
      

发表于 2008-8-6 18:44 
感谢回复
按照这种数据确实可以,不过花费了10分钟以上。
明天再分析原因了。


只看该作者    顶部
离线 iblog
初级会员



精华贴数 0
个人空间 0
技术积分 24 (48239)
社区积分 0 (991325)
注册日期 2006-6-15
论坛徽章:0
      
      

发表于 2008-8-7 15:29 
今天重新作了数据之后可以了,但是老数据怎么也不行,
发现老数据在最后都有几十个半角空格,trim后就正常了,终于解决了,感谢回复。
但是,在新数据中也增加空格后,竟然正常通过了,真是不明白了。
有人遇到这样的问题吗?
发现了一个帖子和我遇到的情况相同,虽然众多好手献计献策,可惜没有最后的结果
http://www.itpub.net/706109.html


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问