问题描述
我正在尝试创建一个搜索功能,在表中搜索 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)
我所做的是:
- 创建了一个上下文类型的索引
CREATE INDEX dm_document_idx ON DM_DOCUMENT(DOCUMENT) INDEXTYPE IS CTXSYS.CONTEXT;
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 应用中。
但是,搜索功能非常严格,需要准确的单词和句子。 我想用户会希望他们搜索的词更加宽容。 为了找到解决方案,我搜索了有关模糊搜索的内容,我的搜索指向以下链接:
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 (将#修改为@)