用instr()来查字?
请详细告知,多谢

解决方案 »

  1.   

    clob对于文件有和blob一样的问题,除非这样对clob赋值
    insert into table1(id, clob_content) values(1, 'insert a string in clob');才不会碰到问题在我这里oracle text对于varchar2类型中英文全部能检索,但是对于blob或者clob的字段就不行了。而且oracle论坛里的人说如果是图文并茂的文档(word/pdf),最好用blob而不是clob
      

  2.   

    blob 无法查,
    clob可以
    dbms_lob.instr("字段名","somestr")
      

  3.   

    但是英文可以查的而且我主要想用oracle text的对文件检索的功能:
    客户端上传文件,服务端将文件放入数据库,每隔一段时间更新索引dbms_lob.instr("字段名","somestr")中somestr最多4000字符,1333汉字,远远不够,不用说文件了
    用jdbc把文件放进clob里和blob一样问题,就是英文可以检索,中文不行
      

  4.   

    关心Oracle Text的朋友可以看看我在Oracle论坛贴的帖子,
    那次问的是用PL/SQL插入BLOB的情况,jdbc里用的是类似的语句[注:/me英文比Oracle水平还水]
    ------------------------------------------------------------- 
    First I use simplify chinese. 
    There are several English and SimplifyChinese words in file a.txt, and all the words are created by typing not copy. 
    My Table structure is: 
    CREATE TABLE "CASTLEZ"."ORATEXT_BLOB" ( 
    "ID" VARCHAR2(10) NOT NULL, 
    "CONTENT" BLOB, PRIMARY KEY("ID") 

    TABLESPACE "ORACLE_TEXT" ; 
    COMMIT; 
    ------------------------------------------------------------- 
    I insert records use this procedure: 
    CREATE OR REPLACE DIRECTORY "MyFilePath" AS 'e:\test'; 
    COMMIT; 
    CREATE OR REPLACE PROCEDURE Save_Blob AS 
    f_lob BFILE; 
    b_lob BLOB; 
    BEGIN 
    INSERT INTO oratext_blob VALUES('1', empty_blob()) RETURN content INTO b_lob; 
    f_lob := BFILENAME('MyFilePath', 'a.txt'); 
    dbms_lob.fileopen(f_lob, dbms_lob.file_readonly); 
    dbms_lob.loadfromfile(b_lob, f_lob, dbms_lob.getlength(f_lob)); 
    dbms_lob.fileclose(f_lob); 
    COMMIT; 
    END; 
    ------------------------------------------------------------- 
    Then I create the Index On the 'content' index: 
    EXEC ctx_ddl.drop_preference('my_lexer'); 
    COMMIT; 
    EXEC CTX_DDL.CREATE_PREFERENCE('my_lexer','CHINESE_VGRAM_LEXER'); 
    COMMIT; 
    ------------------------------------------------------------- 
    All operation done Successfully 
    ------------------------------------------------------------- 
    But when I query a word exists in the inserted file -- 'a.txt': 
    SELECT score(1), id FROM oratext_blob 
    WHERE contains(content, '<some chinese word in a.txt>', 1)>0; 
    COMMIT; no fit record displayed. Even I query an English word in that file. 
    ------------------------------------------------------------- PS: I use Oracle 9ir2 
    and the nls of database is 
    PARAMETER VALUE 
    ---------------------------------------------------------------- ---------------------------------------------------------------- 
    NLS_LANGUAGE SIMPLIFIED CHINESE 
    NLS_TERRITORY CHINA 
    NLS_CURRENCY RMB 
    NLS_ISO_CURRENCY CHINA 
    NLS_NUMERIC_CHARACTERS ., 
    NLS_CALENDAR GREGORIAN 
    NLS_DATE_FORMAT DD-MON-RR 
    NLS_DATE_LANGUAGE SIMPLIFIED CHINESE 
    NLS_CHARACTERSET ZHS16GBK 
    NLS_SORT BINARY 
    NLS_TIME_FORMAT HH.MI.SSXFF AM 
    NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM 
    NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR 
    NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR 
    NLS_DUAL_CURRENCY RMB 
    NLS_NCHAR_CHARACTERSET AL16UTF16 
    NLS_COMP BINARY 
    NLS_LENGTH_SEMANTICS BYTE 
    NLS_NCHAR_CONV_EXCP FALSE