Oracle文本中的文本搜索

时间:2017-09-04 12:42:27

标签: oracle file oracle-text

我正在创建一个需要搜索文本文件(.doc,.txt,.pdf,...)的数据库。 开始创建首选项:

ctx_ddl.create_preference('DOCSPIDER_DIR','FILE_DATASTORE');

我没有指定'路径'值可能有子目录。 然后我创建了一个表:

create table document (id number, path varchar2(2000));
ALTER TABLE document ADD (CONSTRAINT document_pk PRIMARY KEY (ID));

创建索引:

create index document_index on document(path)
indextype is ctxsys.context
parameters ('datastore DOCSPIDER_DIR filter ctxsys.auto_filter');

要同步的命令:

ctx_ddl.sync_index('document_index', '2M');

创建结构后,我插入一条指向现有文档的记录:

INSERT INTO document VALUES (1, '\\server\oracle_text_files\file_name.txt');

但是,当您运行查询搜索此文档的内容时,它不会返回数据:

SELECT * from document WHERE CONTAINS(path, 'test', 1) > 0;

有什么东西不见了?

1 个答案:

答案 0 :(得分:0)

我敢打赌,如果你去,你会得到结果:

SELECT * from document WHERE CONTAINS(path, 'txt', 1) > 0;

确实,你做的INSERT不会将文件加载到数据库中!你必须查看一些内容来将文件加载为CLOB或其他东西。

有关SO的有趣帖子也是如此,比如说