oracle全文索引之FILTER_2_INSO_FILTER
Oracle的全文索引除了可以支持文本文件外,还可以支持多种文档格式,对于这些文档格式,在建立索引的时候需要指定INSO_FILTER参数,使用这个过滤参数,Oracle的全文索引可以识别绝大部分的常见文档,比如:word、pdf等。
下面看一个索引文档的例子:
SQL> conn myuser/myuser
Connected.
SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));
Table created.
SQL> INSERT INTO T VALUES (1, 'pdf.pdf');
1 row created.
SQL> INSERT INTO T VALUES (2, 'doc1.doc');
1 row created.
SQL> commit;
Commit complete.
SQL> begin
2 CTX_DDL.CREATE_PREFERENCE('TEST_FILE', 'FILE_DATASTORE');
3 CTX_DDL.SET_ATTRIBUTE('TEST_FILE', 'PATH', '/home/oracle');
4 END;
5 /
PL/SQL procedure successfully completed.
SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('DATASTORE TEST_FILE FILTER CTXSYS.INSO_FILTER');
Index created.
SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'ORACLE') > 0;
ID
----------
DOCS
--------------------------------------------------------------------------------
1
pdf.pdf
2
doc1.doc
SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'sina.com')>0;
ID
----------
DOCS
--------------------------------------------------------------------------------
1
pdf.pdf
下面试试如果修改文档的内容,是否还能查询得到?
先在doc1.doc中新入一行"ericlu"字符。
SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'ericlu')>0;
no rows selected
SQL> exec CTX_DDL.SYNC_INDEX('IND_T_DOCS');
PL/SQL procedure successfully completed.
SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'ericlu')>0;
no rows selected
同步过索引依然找不到
SQL> drop index IND_T_DOCS;
Index dropped.
SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('DATASTORE TEST_FILE FILTER CTXSYS.INSO_FILTER');
Index created.
SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'ericlu')>0;
ID
----------
DOCS
--------------------------------------------------------------------------------
2
doc1.doc
重建后可以找到,下面试了rebuild也可以的。
先在doc1.doc中加入"my cups"字符。
SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'my cups')>0;
no rows selected
SQL> alter index IND_T_DOCS rebuild;
Index altered.
SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'my cups')>0;
ID
----------
DOCS
--------------------------------------------------------------------------------
2
doc1.doc
FILTER的默认值并不是一成不变的,这个默认值会受索引字段类型和DATASTORE的类型的影响。在上一篇文章中
的测试中,对于存储在数据库中的VARCHAR2、CHAR和CLOB字段中的数据,Oracle自动选择了NULL_FILTEL。在这
里DATASTORE的属性为FILE_DATASTORE,则Oracle会默认选择 INSO_FILTER作为默认值。
SQL> DROP INDEX IND_T_DOCS;
Index dropped.
SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('DATASTORE TEST_FILE FILTER CTXSYS.INSO_FILTER');
Index created.
SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'ORACLE') > 0;
ID
----------
DOCS
--------------------------------------------------------------------------------
1
pdf.pdf
2
doc1.doc
SQL> DROP INDEX IND_T_DOCS;
Index dropped.
SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('DATASTORE TEST_FILE');
Index created.
SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'ORACLE') > 0;
ID
----------
DOCS
--------------------------------------------------------------------------------
1
pdf.pdf
2
doc1.doc
可以发现默当DATASTORE的属性为FILE_DATASTORE,Oracle会选择 INSO_FILTER作为默认值。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/271283/viewspace-1022211/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/271283/viewspace-1022211/
oracle全文索引之FILTER_2_INSO_FILTER相关推荐
- oracle 同步索引,oracle全文索引之同步和优化索引做了什么
一.同步索引做了什么 我们知道,在数据被修改后,不能被查询到了,直到索引被同步.那么同步索引做了那些工作呢? > insert into t_domain values(3,'this is b ...
- Oracle全文索引
Oracle全文索引 一.设置词法分析器 Oracle实现全文检索,其机制其实很简单.即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle 称为 term)找出来,记 ...
- oracle 全文索引 优化,通过案例学调优之--Oracle 全文索引
通过案例学调优之--Oracle 全文索引 全文检索(oracle text) Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力,Oracle Text 是 Or ...
- Oracle 全文索引
缘由 我们经常需要对表的内容进行模糊查询,在数据量不算很大的情况下,使用起来还是没什么问题,因为不会出现明显的慢查询问题.但是当某些时候,单表数据量很大的时候,查询速度就会有明显的变慢问题.此时,我们 ...
- 建立Oracle全文索引
最近要做搜索,所以学起Oracle全文索引来了. 参考文章:http://www.eygle.com/archives/2005/06/ecieoaoracleeia.html 如何使用Oracle全 ...
- oracle 加全文索引,oracle全文索引的创建和使用
一.设置词法分析器 Oracle实现全文检索,其机制其实很简单.即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle称为term)找出来,记录在一组以dr$开头的表中 ...
- Oracle全文索引之四 维护
###索引的维护 对于CTXSYS.CONTEXT索引,当应用程序对基表进行DML操作后,对基表的索引维护是必须的.索引维护包括索引同步和索引优化. 在索引建好后,我们可以在该用户下查到Oracle自 ...
- Oracle全文索引之二 创建
###创建 ####创建索引的准备工作 #####测试环境 在测试用户myoralce用户下执行: create table YU_TEST( id number, name varch ...
- oracle如何安装全文索引,Oracle全文索引设置步骤
已有几个项目组开始使用oracle的全文索引.Oracle的词法分析器针对ZHS16GBK字符集的词法分析尚不够智能,只能机械地以字为单元 进行匹配.对于utf8字符集的数据库有一个新的汉语分析器ch ...
最新文章
- 重复提交版本之后该采取的测试策略
- MysqL数据库密码的管理
- Spring 的 BeanFactory 和 FactoryBean 傻傻分不清?
- ASP.Net开发新手常见问题备忘录
- Calibrating delay loop... 问题以及解决方法(RealARM开发板)
- Android开发之RecyclerView嵌套ListView自动计算高度的方法
- 多线程调用同一个对象的方法_多线程之如何创建和使用线程
- BABOK - 企业分析(Enterprise Analysis)概要
- 正则表达式中原子的5种类型
- MPFlipViewController
- python微信公众菜单_Python实现微信公众平台自定义菜单实例
- 数据库存储 层次、树形结构 的标准做法
- 微信公众号开发之课堂考勤
- python日期函数_Python日期时间处理: datestuff
- 网易2018校园招聘:重排数列 [python]
- 华为机试 第二题-速战速决
- 通过Windows防火墙禁止某程序(或软件)联网
- JS 实战: Drag 点击拖曳效果
- 泛统计理论初探——孤立森林简介
- 2021-2027全球及中国泳池水监测设备行业研究及十四五规划分析报告