这篇文章继续讨论全文索引的DATASTORE属性,介绍URL_DATASTORE。

全文索引可以很方便的索引存储在INTERNET上的信息。在数据库中只需要存储需要索引的文章的URL就可以了。

由于目前讨论的是DATASTORE属性,因此这个例子只索引HTML文章,对于其他需要使用FILTER属性的文章,在以后讨论。

SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));

表已创建。

SQL> INSERT INTO T VALUES (1, 'http://yangtingkun.itpub.net/');

已创建 1 行。

SQL> INSERT INTO T VALUES (2, 'http://www.itpub.net/');

已创建 1 行。

SQL> COMMIT;

提交完成。

SQL> CONN CTXSYS/CTXSYS@YANGTK
已连接。
SQL> BEGIN
2 CTX_DDL.CREATE_PREFERENCE('TEST_URL', 'URL_DATASTORE');
3 END;
4 /

PL/SQL 过程已成功完成。

SQL> CONN YANGTK/YANGTK@YANGTK
已连接。
SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('DATASTORE CTXSYS.TEST_URL');

索引已创建。

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'ORACLE') > 0;

ID DOCS
---------- ------------------------------
2 http://www.itpub.net/
1 http://yangtingkun.itpub.net/

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'YANGTINGKUN') > 0;

ID DOCS
---------- ------------------------------
2 http://www.itpub.net/
1 http://yangtingkun.itpub.net/

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'TIMESTEN') > 0;

ID DOCS
---------- ------------------------------
1 http://yangtingkun.itpub.net/

当时看Oracle的例子感觉URL_DATASTORE很复杂,但是测试之后才发现,使用起来还是很简单的。需要注意的就是,保证数据库所在服务器可以连到INTERNET上。

如果没有连接到被索引的页面,那么Oracle并不会报错,但是,所有的查询都不会返回记录。

SQL> DROP INDEX IND_T_DOCS;

索引已丢弃。

SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('DATASTORE CTXSYS.TEST_URL');

索引已创建。

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'ORACLE') > 0;

未选定行

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'YANGTINGKUN') > 0;

未选定行

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, 'TIMESTEN') > 0;

未选定行

如果需要代理才能连到INTERNET上,可以设置URL_DATASTORE的HTTP_PROXY等属性。URL_DATASTORE还包含很多的属性,这里就不详细的介绍了,Oracle的Text Reference文档上有比较详细的说明。

最后要说明的是,Oracle中仅仅保存被索引文档的URL地址,因此,如果文档本身发生了变化,Oracle是无法知道的,也无法去同步索引,这时必须通过修改索引列也就是URL地址列的方式来通知Oracle,被索引数据已经发生了变化。

使Oracle了解需要同步索引变化的最简单的方法类似于:UPDATE T SET DOCS = DOCS WHERE ID = 1;

ORACLE TEXT DATASTORE PREFERENCE(四)相关推荐

  1. ORACLE TEXT DATASTORE PREFERENCE(二)

    这篇文章继续讨论全文索引的DATASTORE属性,介绍MULTI_COLUMN_DATASTORE. 如果被索引的文章是保存在数据库中,但是内容分布在多个列中,那么可以通过建立一个MULTI_COLU ...

  2. ORACLE TEXT DATASTORE PREFERENCE(一)

    Oracle Text功能十分强大,可是文档上给出的例子总是过于简单,而且可能是为了减少篇幅,不少例子只给出了其中关键的几步,但是对于初学者而言,阅读这样的例子很难对全文索引的创建有一个清晰的了解,而 ...

  3. ORACLE TEXT DATASTORE PREFERENCE(五)

    这篇文章继续讨论全文索引的DATASTORE属性,介绍DETAIL_DATASTORE. 全文索引运行将被索引的数据存储在子表的多条记录中,下面看一个简单的例子: SQL> CREATE TAB ...

  4. ORACLE TEXT DATASTORE PREFERENCE(七)

    这篇文章讨论全文索引DATASTORE的最后一种属性,介绍USER_DATASTORE. Oracle功能的强大体现在很多方面,除了很多Oracle预定义好的接口以外,Oracle还提供了强大的自定义 ...

  5. ORACLE TEXT DATASTORE PREFERENCE(六)

    这篇文章继续讨论全文索引的DATASTORE属性,介绍NESTED_DATASTORE. 全文索引支持将数据存储在多个列中或存储在主子表中,全文索引还支持将数据存储在嵌套表中.嵌套表的例子和主子表比较 ...

  6. ORACLE TEXT DATASTORE PREFERENCE(三)

    这篇文章继续讨论全文索引的DATASTORE属性,介绍FILE_DATASTORE. 全文索引的对象一般是篇幅较大的文章,除了保存在数据库中的情况,另外一种常见的情况是以文件的形式保存在操作系统中. ...

  7. ORACLE TEXT FILTER PREFERENCE(一)

    介绍完Oracle全文索引的DATASTORE属性,继续介绍Oracle的FILTER属性. Oracle全文索引的FILTER属性主要是针对具有一定格式的文档,Oracle根据FILTER的设定来过 ...

  8. ORACLE TEXT LEXER PREFERENCE(四)

    本文继续介绍Oracle全文索引的LEXER属性,这篇文章介绍Oracle多语言全文索引DEFAULT_LEXER. 其实这篇文章应该放在LEXER属性的开头部分,不过我的测试一直和Oracle文档上 ...

  9. ORACLE TEXT FILTER PREFERENCE(四)

    这篇文章继续介绍全文索引的FILTER属性,介绍全文索引的PROCEDURE_FILTER属性. 对于一些复杂的需求,Oracle自定义的FILTER可能并不合适,Oracle支持用户自己编写用于FI ...

最新文章

  1. golang float64 保留2位小数
  2. 一个例子带你搞懂python作用域中的global、nonlocal和local
  3. web前端开发论文写作_外语论文文献引言格式—MLA Style
  4. 披星戴月地辛苦割胶或成历史,海南胶园迎来这一“神器”!
  5. AWK 批量杀进程号,好记性不如烂笔头
  6. 流利说公布上市后首份财报:第三季净收入1.8亿
  7. ANSYS——模态分析的理论基础
  8. android输入法ios下载安装,仿ios输入法
  9. Reinitialized existing Git repository in xxx
  10. Gauss-Newton法matlab求解
  11. 20-Netty TCP 粘包和拆包及解决方案
  12. Kotlin入门:var和val的区别
  13. 3月13日云栖精选夜读 | Serverless 风暴来袭,前端工程师如何应对?
  14. 苹果发布会总结:全新 iMac、iPad Pro、 紫色 iPhone 12 和 AirTag 登场
  15. 【test】testtest
  16. STM32F4XX的DFU功能
  17. matlab while 嵌套,MATLAB嵌套循环
  18. 机器人大冒险(二维数组)
  19. 我是怎样爬下6万共享单车数据并进行分析的(附代码)
  20. ib中文诗歌赏析:背后的文化意义

热门文章

  1. CentOS7 Change the Sources of yum(刚装完centos后一定要干的事)
  2. 【计算机基础】存储器层次 Memory hierarchy
  3. webgestalt 通路富集分析
  4. 92. Reverse Linked List II
  5. vue 打包体积过大 实现懒加载 ????
  6. 51Nod 1322 - 关于树的函数(树DP)
  7. 详解使用flask_paginate进行分页
  8. java线程学习第一天__低配版的卖面包机
  9. NOI[2001]食物链
  10. UITableView的UITableViewStyleGrouped