真的就没有人会??我看e文时, 告诉我创建ctxsys用户,
然后让我对它付ctxadmin权限,可我怎么也没有找到创建ctxadmin角色的地方呀?  e 文帮助里找不到呀.  ...., 还有怎么启动ConText server呢??god save me!!!

解决方案 »

  1.   

    应该是e 文里没有告诉我怎么创建ctxadmin角色, 我自己创建了没有用!
      

  2.   

    我也在研究,不过我用的9i,我有些9i的文档,你参考下吧
    简单的示例  这里先给出一个简单示例说利用Oracle Text实现全文检索的方法与步骤,在后面在进行具体的说明。Orcale9i提供了Oracle Text Manager可以简化许多工作,所有在Oracle Text Manager中完成的工作,都可以在通过PL/SQL来实现。要使用Oracle Text,必须具有CTXAPP角色或者是CTXSYS用户。Oracle Text为系统管理员提供CTXSYS用户,为应用程序开发人员提供CTXAPP角色。  CTXSYS用户可执行以下任务:启动Oracle Text服务器,执行CTXAPP角色的所有任务。
    具有CTXAPP角色的用户可执行以下任务: 创建索引,管理 Oracle Text 数据字典,包括创建和删除首选项,进行Oracle Text 查询,使用 Oracle Text PL/SQL程序包。  使用Oracle Text的步骤:  (1)创建表来保存某些文档。该示例使用一个主关键字列来标识每个文档,使用一个小的VARCHAR2列来保存每个文档。CREATE TABLE docs (id NUMBER PRIMARY KEY, text VACHAR2(80));  (2)将两个示例文档置入该表:INSERT INTO docs VALUES (1,'the first doc');
    INSERT INTO docs VALUES (2,'the second doc');
    COMMIT;  (3)使用Oracle Text Manager来创建和修改首选项,首选项将与索引相关联。  (4)使用Oracle Text Manager创建文本索引。另外,可以输入以下使用默认首选项的 SQL 语句:CREATE INDEX doc_index ON docs(text) INDEXTYPE IS CTXSYS.CONTEXT;   (5)使用 CONTAINS 函数,发出基于内容的文档查询。例如:SELECT id FROM docs WHERE CONTAINS (text, 'first') > 0;   这将在文本列包含单词 first (即文档1) 的 docs 中查找所有行。语句中的>0部分是有效的Oracle SQL所必需的,Oracle SQL不支持函数的布尔返回值。  以上只是一个简单的示例,旨在给出使用Oracle Text建立全文索引的完整步骤,归纳起来如下:  (1)建表并装载文本(包含带有需要检索的文本字段)  (2)配置索引  (3)建立索引  (4)发出查询  (5)索引维护:同步与优化
      

  3.   

    文本装入文本列后,就可以创建Oracle Text索引。文档以许多不同方案、格式和语言存储。因此,每个 Oracle Text 索引有许多需要设置的选项,以针对特定情况配置索引。创建索引时,Oracle Text可使用若干个默认值,但在大多数情况下要求用户通过指定首选项来配置索引。  每个索引的许多选项组成功能组,称为"类",每个类集中体现配置的某一方面,可以认为这些类就是与文档数据库有关的一些问题。例如:数据存储、过滤器、词法分析器、相关词表、存储等。  每个类具有许多预定义的行为,称之为对象。每个对象是类问题可能具有的答案,并且大多数对象都包含有属性。通过属性来定制对象,从而使对索引的配置更加多变以适应于不同的应用。  (1)存储(Storage)类  存储类指定构成Oracle Text索引的数据库表和索引的表空间参数和创建参数。它仅有一个基本对象:BASIC_STORAGE,其属性包括:I_Index_Clause、I_Table_Clause、K_Table_Clause、N_Table_Clause、P_Table_Clause、R_Table_Clause。  (2)数据存储(Datastore)类  数据存储:关于列中存储文本的位置和其他信息。默认情况下,文本直接存储到列中,表中的每行都表示一个单独的完整文档。其他数据存储位置包括存储在单独文件中或以其 URL 标识的 Web 页上。七个基本对象包括:Default_Datastore、Detail_Datastore、Direct_Datastore、File_Datastore、Multi_Column_Datastore 、URL_Datastore、User_Datastore,。  (3)文档段组(Section Group)类  文档段组是用于指定一组文档段的对象。必须先定义文档段,然后才能使用索引通过 WITHIN 运算符在文档段内进行查询。文档段定义为文档段组的一部分。包含七个基本对象:AUTO_SECTION_GROUP、BASIC_SECTION_GROUP、HTML_SECTION_GROUP、NEWS_SECTION_GROUP、NULL_SECTION_GROUP、XML_SECTION_GROUP、PATH_SECTION_GROUP。  (4)相关词表(Wordlist)类  相关词表标识用于索引的词干和模糊匹配查询选项的语言,只有一个基本对象BASIC_WORDLIST,其属性有:Fuzzy_Match、Fuzzy_Numresults、Fuzzy_Score、Stemmer、Substring_Index、Wildcard_Maxterms、Prefix_Index、Prefix_Max_Length、Prefix_Min_Length。  (5)索引集(Index Set)  索引集是一个或多个Oracle 索引 (不是Oracle Text索引) 的集合,用于创建 CTXCAT类型的Oracle Text索引,只有一个基本对象BASIC_INDEX_SET。  (6)词法分析器(Lexer)类  词法分析器类标识文本使用的语言,还确定在文本中如何标识标记。默认的词法分析器是英语或其他西欧语言,用空格、标准标点和非字母数字字符标识标记,同时禁用大小写。包含8个基本对象:BASIC_LEXER、CHINESE_LEXER、CHINESE_VGRAM_LEXER、JAPANESE_LEXER、JAPANESE_VGRAM_LEXER、KOREAN_LEXER、KOREAN__MORPH_ LEXER、MULTI_LEXER。  (7)过滤器(Filter)类  过滤器确定如何过滤文本以建立索引。可以使用过滤器对文字处理器处理的文档、格式化的文档、纯文本和 HTML 文档建立索引,包括5个基本对象:CHARSET_FILTER、INSO_FILTER INSO、NULL_FILTER、PROCEDURE_FILTER、USER_FILTER。  (8)非索引字表(Stoplist)类  非索引字表类是用以指定一组不编入索引的单词 (称为非索引字)。有两个基本对象:BASIC_STOPLIST (一种语言中的所有非索引字) 、 MULTI_STOPLIST (包含多种语言中的非索引字的多语言非索引字表)。
      

  4.   

    至于ctxadmin我也不清楚,这方面8i和9i不同,在9i里直接授予CTXAPP角色就可以了你查下8i中Oracle interMedia Text的相关资料吧
      

  5.   

    我安装的是oracle805数据库, 在oracle 805中叫context.1\安装好了context后,发现已经有了ctxsys用户,ctxadmin,ctxapp等角色
    2\我用ctxsrv80 -user ctxsys/ctxsys 启动服务也没出错. 3\然后我就建表
    CREATE TABLE docs (id NUMBER PRIMARY KEY, text VACHAR2(80));INSERT INTO docs VALUES (1,'the first doc');
    INSERT INTO docs VALUES (2,'the second doc');
    COMMIT;再调用select * from tbl_docs where contains(text,'abc')>0;就不动了,进程也没有反应! 
    不知道应该怎么办? 也就是说应该怎样实现全文检索呢??? 请不吝赐教!!!!
      

  6.   

    参考
    http://www.pcdog.com/info/3617.htm
      

  7.   

    oracle有帮助文档,比较全面:
    http://download-west.oracle.com/docs/cd/B10501_01/text.920/a96518/toc.htm
      

  8.   

    我按照e文帮助,先建表之后,begin
      ctx_ddl.drop_policy('ctxio_emp_pol');
      ctx_ddl.create_policy (policy_name     => 'ctxio_emp_pol',
                             colspec       => 'ctxio_emp.resume',
                             textkey => 'empno');
      select *  from ctxio_emp  where ctx_query.contains(policy_name => 'ctxio_emp_pol',
                       text_query =>'oracle');
    end;结果select 时出问题了:
    ora-06550:....
    PLS-00222: 在此范围(scope)中不存在名为contains函数.
    可是我明明看见里面有这个函数的呀!!怪怪.有没有人能指导一下. 不甚感激.
      

  9.   

    再细看,说我没创建索引.
    但时我
    create index i_ctxio on ctxio_emp(resume) indextype is ctxsys.context ;这样做说是无效的参数.
    而这样
    create index i_ctxio on ctxio_emp(resume)
    就说是不能在blob列定义索引.怎么办?? 有没有人愿意同我一起讨论一下的.
      
      

  10.   

    我用这个创建索引时
    ctx_ddl.create_index('ctxio_emp_pol',create_trig => true);
    却报:
    ORA-20000: ConText error:
    DRG-10521: failed to access the text index: column policy=ctxio_emp_pol
    DRG-10518: an operation is in progress which conflicts with CREATE request
    ORA-06512: 在"CTXSYS.DRUE", line 180
    ORA-06512: 在"CTXSYS.CTX_DDL", line 94
    ORA-06512: 在line 2