暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 计算文档中某个单词的外观

askTom 2017-03-06
201

问题描述

你好,

我正在尝试将某个单词的外观计数到文档中 (在数据库中存储为BFILE)。
表定义是这样的:
创建表MY_DOC
(Id号主键,
文件名称VARCHAR2(255),
上传 _ 日期变量2(10),
文件大小VARCHAR2(20),
文件类型VARCHAR2(5),
内容BFILE,
创建日期默认系统日期不为空启用,
修改日期日期,
ACCESSED_DATE DATE);

其内容为:
ID文件 _ 名称上传 _ 日期文件大小文件类型创建 _ 日期修改 _ 日期访问 _ 日期内容
242 test.doc 06-MAR-17 37。doc 23-FEB-17 02-MAR-17 23-FEB-17 (BFILE)
232 htmldoc.html 06-MAR-17 28.html 06-3-17 (BFILE)
243 text.txt 06-MAR-17 24.pdf 27-FEB-17 02-3-17 27-FEB-17 (BFILE)
223 wordfile.docx 06-MAR-17 1913。docx 06-3-17 (BFILE)

每个文件或多或少包含 “测试” 一词。
我想创建一个查询来显示文件名以及 'test' 单词在里面出现多少次。
如果有些文件有问题。DOCX或。PDF?查询会显示正确的结果吗?

您能帮我提示如何构建查询吗?

非常感谢,
Ionut P。

专家解答

您可以使用CTX_DOC.TOKENS包提取令牌 (不包括默认停用词),例如

SQL> create table documents (id number primary key, text bfile);

Table created.

SQL> insert into documents values (1, bfilename('MY_DIR','12things_about_122.pdf'));

1 row created.

SQL> create index documents_idx on documents (text) indextype is ctxsys.context;

Index created.

SQL> set serveroutput on size 1000000
SQL> declare
  2   the_tokens ctx_doc.token_tab;
  3  begin
  4   ctx_doc.set_key_type ('PRIMARY_KEY');
  5   ctx_doc.tokens('documents_idx','1',the_tokens);
  6   dbms_output.put_line('Number of tokens: '|| the_tokens.count);
  7  end;
  8  /
Number of tokens: 11452

PL/SQL procedure successfully completed.


由于我们实际上 * 提取 * 所有令牌,您可能希望在插入时只执行一次,并将其与行一起存储,而不是每次查询时都将其拾取。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论