有没有办法使用 Oracle Text CONTEXT Indexes 对 BLOB 进行模糊搜索?

问题描述

我正在尝试创建一个搜索功能,在表中搜索 BLOB 的内容。我一直在关注这个链接作为基线: https://oracle-base.com/articles/9i/full-text-indexing-using-oracle-text-9i

我有下表,里面有几行BLOB:

sql> desc dm_document
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 DOCUMENT_NO                                        VARCHAR2(100)
 DOCUMENT_TYPE                                      VARCHAR2(100)
 DOCUMENT                                           BLOB
 FILENAME                                           VARCHAR2(255)
 MIMETYPE                                           VARCHAR2(100)
 LAST_UPDATE_DATE                                   DATE
 HOSTNAME                                           VARCHAR2(255)
 URL                                                VARCHAR2(255)
 FOLDER_NAME                                        VARCHAR2(255)
 FOLDER                                             VARCHAR2(10)
 CATEGORYID                                         VARCHAR2(10)
 SUBCATEGORYID                                      VARCHAR2(10)
 VERSIONID                                          VARCHAR2(10)
 APPRovalID                                         VARCHAR2(10)
 UPLOAD_TYPE                                        VARCHAR2(50)

我所做的是:

  1. 创建了一个上下文类型的索引
CREATE INDEX dm_document_idx ON DM_DOCUMENT(DOCUMENT) INDEXTYPE IS CTXSYS.CONTEXT;
  1. 之后,我使用简单的搜索查询表,例如:
SELECT 
score(1) score,DOCUMENT_NO,DOCUMENT_TYPE,FILENAME,MIMETYPE
FROM  DM_DOCUMENT
WHERE  CONTAINS(DOCUMENT,'dokumen',1) > 0
ORDER BY score(1) DESC;

哪个有效,我已将其集成到我的 Oracle APEX 应用中。

但是,搜索功能非常严格,需要准确的单词和句子。 我想用户会希望他们搜索的词更加宽容。 为了找到解决方案,我搜索了有关模糊搜索内容,我的搜索指向以下链接

Oracle Fuzzy text search

https://docs.oracle.com/cd/B13789_01/text.101/b10730/cqoper.htm

这促使我尝试以下查询

sql> SELECT
  2  score(1) score,3  DOCUMENT_NO,4  DOCUMENT_TYPE,5  FILENAME,6  MIMETYPE
  7  FROM  DM_DOCUMENT
  8  WHERE  CONTAINS(DOCUMENT,'fuzzy(dokumen inii,70,6,weight)',1) > 0
  9  ORDER BY score(1) DESC;
SELECT
*
ERROR at line 1:
ORA-29902: error in executing ODCIIndexStart() routine
ORA-20000: Oracle Text error:
DRG-50901: text query parser Syntax error on line 1,column 15

我知道我可能以错误的方式处理了这个问题,因为模糊函数似乎适用于文本列而不是 BLOB。有没有合适的方法来做到这一点(或其他方法)?

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)