时间:2021-07-01 10:21:17 帮助过:54人阅读
关于 Oracle 文本索引提供的存储过程我们知道 Oracle 文本索引有四种类型:CONTEXT、CTXCAT、CTXRULE 和 CTXXPATH。其中 CTXXPAT
本文内容
我们知道 Oracle 文本索引有四种类型:CONTEXT、CTXCAT、CTXRULE 和 CTXXPATH。其中 CTXXPATH 已标记废弃,在将来的 Oracle 版本会去掉。
默认情况,系统期望你的文本存储在文本列中。这样,你就可以使用没有显示指定任何“偏好(preferences)”的 CREATE INDEX 创建一个文本索引,作为一个可扩展的 CONTEXT 索引类型。系统会自动检测你的语言、文本列的数据类型、文档格式和相应索引偏好的设置。
所谓“偏好(preferences)”是你对文本索引的配置,类似 MS SQL Server 的“填充因子”。也就是说,在建立文本索引前,你可以先创建配置,再在创建文本索引时通过 parameter 子句使用。
若创建一个 Oracle 文本索引:
类
描述
Datastore
你的文档如何存储
Filter
文档如何转换成纯文本
Lexer
索引的语言是什么
Wordlist
模糊和词干查询如何扩展
Storage
索引数据如何存储
Stop List
什么样的词或主题不用索引
Section Group
文档的节如何定义
更多 Oracle 文本索引要素,包括 Datastore、Filter 、Lexer 、Wordlist、Storage、Section Group 、Classifier、Cluster、Stoplists、System-Defined Preferences 和 System Parameters。
创建索引偏好
你可以自定义文本索引的“偏好(preferences)”。使用“偏好”来指定索引信息,例如你的文件存储在哪里,你的文档如何过滤。创建“偏好”,并设置其属性。
Datastore Examples本小节给出 direct、multi-column、URL 和 file 数据存储的例子。
本例创建一个表,其 CLOB 列存储文本数据。向该表填充两条数据,并使用系统预定义的 preference CTXSYS.DEFAULT_DATASTORE 索引该表,它使用 DIRECT_DATASTORE preference 类型。
, docs clob); insert into mytable values(111555,'this text will be indexed');insert into mytable values(111556,'this is a default datastore example');commit; create index myindex on mytable(docs) indextype is ctxsys.context parameters ('DATASTORE CTXSYS.DEFAULT_DATASTORE');
本例在三个串联和索引的列上,创建一个名为 "my_multi" 多列数据存储的 preference。
beginctx_ddl.create_preference('my_multi', 'MULTI_COLUMN_DATASTORE');ctx_ddl.set_attribute('my_multi', 'columns', 'column1, column2, column3');end;
本例创建一个名为 "my_url" 的 URL_DATASTORE 偏好,并设置其属性 http_proxy、no_proxy 和 timeout。其中,timeout 属性为 300 秒。默认情况下,使用这些属性都没有设置。
begin ctx_ddl.create_preference('my_url','URL_DATASTORE'); ctx_ddl.set_attribute('my_url','HTTP_PROXY','www-proxy.us.oracle.com'); ctx_ddl.set_attribute('my_url','NO_PROXY','us.oracle.com'); ctx_ddl.set_attribute('my_url','Timeout','300');end;
本例使用 FILE_DATASTORE 创建一个数据存储的偏好。该属性告诉系统,,索引的文件位于操作系统。本例使用 CTX_DDL.SET_ATTRIBUTE 方法来设置 PATH 目录属性为 "/docs"。
beginctx_ddl.create_preference('mypref', 'FILE_DATASTORE');ctx_ddl.set_attribute('mypref', 'PATH', '/docs'); end;