文件中的Oracle文本搜索

文件中的Oracle文本搜索,oracle,file,oracle-text,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 PR

我正在创建一个需要在文本文件(.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;

缺少什么?

我敢打赌,如果你去:

SELECT * from document WHERE CONTAINS(path, 'txt', 1) > 0;
实际上,您所做的
INSERT
不会将文件加载到数据库中
您必须查找某些内容,才能将文件作为CLOB或其他内容加载

比如说,网站上也有有趣的帖子


我敢打赌,如果你去:

SELECT * from document WHERE CONTAINS(path, 'txt', 1) > 0;
实际上,您所做的
INSERT
不会将文件加载到数据库中
您必须查找某些内容,才能将文件作为CLOB或其他内容加载

比如说,网站上也有有趣的帖子


你好,乔梅尔,谢谢你的回复。但是,我无法将文档内容导入数据库。我需要使用oracle的特性来流式处理文档,正如文档中所报告的:从文档中我没有得到这个。在本例中,要在文本中查找的字符串位于数据库中,但您将全文提供给match函数。当您转到下一章时,您会看到表中有一个俱乐部……在本文档主题中,据说数据存储对象从其中一个源(数据库、url或文件)读取:因此我认为没有必要将文件的内容加载到数据库中。(…)例如,如果已将数据存储定义为FILE_数据存储,则流将从操作系统读取文件开始。您也可以将文档存储在Internet或Oracle数据库中。您好,乔梅尔,谢谢您的回复。但是,我无法将文档内容导入数据库。我需要使用oracle的特性来流式处理文档,正如文档中所报告的:从文档中我没有得到这个。在本例中,要在文本中查找的字符串位于数据库中,但您将全文提供给match函数。当您转到下一章时,您会看到表中有一个俱乐部……在本文档主题中,据说数据存储对象从其中一个源(数据库、url或文件)读取:因此我认为没有必要将文件的内容加载到数据库中。(…)例如,如果已将数据存储定义为FILE_数据存储,则流将从操作系统读取文件开始。您还可以将文档存储在Internet或Oracle数据库中。