这篇文章继续介绍全文索引的FILTER属性,介绍Oracle的INSO_FILTER属性。[@more@]
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相关推荐

  1. oracle 同步索引,oracle全文索引之同步和优化索引做了什么

    一.同步索引做了什么 我们知道,在数据被修改后,不能被查询到了,直到索引被同步.那么同步索引做了那些工作呢? > insert into t_domain values(3,'this is b ...

  2. Oracle全文索引

    Oracle全文索引 一.设置词法分析器 Oracle实现全文检索,其机制其实很简单.即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle 称为 term)找出来,记 ...

  3. oracle 全文索引 优化,通过案例学调优之--Oracle 全文索引

    通过案例学调优之--Oracle 全文索引 全文检索(oracle text) Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力,Oracle Text 是 Or ...

  4. Oracle 全文索引

    缘由 我们经常需要对表的内容进行模糊查询,在数据量不算很大的情况下,使用起来还是没什么问题,因为不会出现明显的慢查询问题.但是当某些时候,单表数据量很大的时候,查询速度就会有明显的变慢问题.此时,我们 ...

  5. 建立Oracle全文索引

    最近要做搜索,所以学起Oracle全文索引来了. 参考文章:http://www.eygle.com/archives/2005/06/ecieoaoracleeia.html 如何使用Oracle全 ...

  6. oracle 加全文索引,oracle全文索引的创建和使用

    一.设置词法分析器 Oracle实现全文检索,其机制其实很简单.即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle称为term)找出来,记录在一组以dr$开头的表中 ...

  7. Oracle全文索引之四 维护

    ###索引的维护 对于CTXSYS.CONTEXT索引,当应用程序对基表进行DML操作后,对基表的索引维护是必须的.索引维护包括索引同步和索引优化. 在索引建好后,我们可以在该用户下查到Oracle自 ...

  8. Oracle全文索引之二 创建

    ###创建 ####创建索引的准备工作 #####测试环境 在测试用户myoralce用户下执行: create table YU_TEST( id number,        name varch ...

  9. oracle如何安装全文索引,Oracle全文索引设置步骤

    已有几个项目组开始使用oracle的全文索引.Oracle的词法分析器针对ZHS16GBK字符集的词法分析尚不够智能,只能机械地以字为单元 进行匹配.对于utf8字符集的数据库有一个新的汉语分析器ch ...

最新文章

  1. 重复提交版本之后该采取的测试策略
  2. MysqL数据库密码的管理
  3. Spring 的 BeanFactory 和 FactoryBean 傻傻分不清?
  4. ASP.Net开发新手常见问题备忘录
  5. Calibrating delay loop... 问题以及解决方法(RealARM开发板)
  6. Android开发之RecyclerView嵌套ListView自动计算高度的方法
  7. 多线程调用同一个对象的方法_多线程之如何创建和使用线程
  8. BABOK - 企业分析(Enterprise Analysis)概要
  9. 正则表达式中原子的5种类型
  10. MPFlipViewController
  11. python微信公众菜单_Python实现微信公众平台自定义菜单实例
  12. 数据库存储 层次、树形结构 的标准做法
  13. 微信公众号开发之课堂考勤
  14. python日期函数_Python日期时间处理: datestuff
  15. 网易2018校园招聘:重排数列 [python]
  16. 华为机试 第二题-速战速决
  17. 通过Windows防火墙禁止某程序(或软件)联网
  18. JS 实战: Drag 点击拖曳效果
  19. 泛统计理论初探——孤立森林简介
  20. 2021-2027全球及中国泳池水监测设备行业研究及十四五规划分析报告

热门文章

  1. 虚拟现实技术人机工程解决方案
  2. MD5简介及其算法源码
  3. 东软实训心得:万事开头难
  4. 通过拖坠自动生成html页面,网页制造开端—html.ppt
  5. DAC8531驱动代码(FPGA)
  6. 前端面试题必考(四)- HTTP短连接,长连接(keep-alive),websocket,postmessage
  7. js颜色 RGB 和 16进制转换
  8. 【Duilib自定义控件】水平布局的滚动扩展布局,实现菜单的可滑动效果
  9. 如何提高解决问题的能力?
  10. python的价值观_Python beauthulsoup刮刮雅虎财经价值观