当前位置:七道奇文章资讯数据防范Oracle防范
日期:2011-01-25 22:55:00  来源:本站整理

<b>详解Oracle数据库中文全文索引-入门底子</b>[Oracle防范]

赞助商链接



  本文“<b>详解Oracle数据库中文全文索引-入门底子</b>[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

    1、历史后台

    Oracle数据库的全文检索技术已经非常完善,Oracle Text使Oracle9i具有了强盛的文本检索本领和智能化的文本管理本领.Oracle Text是Oracle9i采取的新名称,在Oracle8/8i中它被称作Oracle interMedia Text,在Oracle8从前它的名称是Oracle ConText Cartridge.

    2、Oracle Text 索引文档时所利用的主要逻辑步骤以下:

    (1) 数据存储逻辑搜索表的全部行,并读取列中的数据.普通,这只是列数据,但有些数据存储利用列数据作为文档数据的指针.

    (2) 过滤器提取文档数据并将其转换为文本表示方法.存储二进制文档 (如 Word 或 Acrobat 文件) 时需求这样做.过滤器的输出没必如果纯文本格局 -- 它可以是 XML 或 HTML 之类的文本格局.

    (3) 分段器提取过滤器的输出信息,并将其转换为纯文本.包含 XML 和 HTML 在内的差别文本格局有差别的分段器.转换为纯文本触及检测重要文档段标志、移去不可见的信息和文本重新格局化.

    (4) 词法解析器提取分段器中的纯文本,并将其拆分为不持续的标志.既存在空白字符脱离语言利用的词法解析器,也存在分段复杂的亚洲语言利用的专门词法解析器.

    (5) 索引引擎提取词法解析器中的全部标志、文档段在分段器中的偏移量以及被称为非索引字的低信息含量字列表,并构建反向索引.倒排索引存储标志和含有这些标志的文档.

    3、需求的权限

    要利用Oracle Text,必须具有CTXAPP角色大概是CTXSYS用户.Oracle Text为系统管理员供应CTXSYS用户,为利用程序开辟人员供应CTXAPP角色.具有CTXAPP角色的用户可履行以下任务:成立索引,管理 Oracle Text 数据字典,包含成立和删除首选项,举行Oracle Text 查询,利用 Oracle Text PL/SQL程序包.

    如图所示:

    4、具体的实现

    文本装入文本列后,便可以成立Oracle Text索引.文档以很多差别筹划、格局和语言存储.因此,每个 Oracle Text 索引有很多需求设置的选项,以针对特定情形配置索引.成立索引时,Oracle Text可以利用若干个默许值,但在大大都情形下要求用户通过指定首选项来配置索引.

    每个索引的很多选项构成功能组,称为"类",每个类集合表现配置的某一方面,可以认为这些类就是与文档数据库有关的一些问题.比方:数据存储、过滤器、词法解析器、相关词表、存储等.

    每个类具有很多预定义的行为,称之为对象.每个对象是类问题大概具有的答案,并且大大都对象都包含有属性.通过属性来定制对象,从而使对索引的配置越发多变以适应于差别的利用.

    (1)存储(Storage)类

    存储类指定构成Oracle Text索引的数据库表和索引的表空间参数和成立参数.它唯一一个基本对象:BASIC_STORAGE,其属性包含:I_Index_Clause、I_Table_Clause、K_Table_Clause、N_Table_Clause、P_Table_Clause、R_Table_Clause.

    (2)数据存储(Datastore)类

    数据存储:关于列中存储文本的位置和其他信息.默许情形下,文本直接存储到列中,表中的每行都表示一个单独的完好文档.其他数据存储位置包含存储在单独文件中或以其 URL 标识的 Web 页上.七个基本对象包含:Default_Datastore、Detail_Datastore、Direct_Datastore、File_Datastore、Multi_Column_Datastore 、URL_Datastore、User_Datastore.

    (3)文档段组(Section Group)类

    文档段组是用于指定一组文档段的对象.必须先定义文档段,然后才能利用索引通过 WITHIN 运算符在文档段内举行查询.文档段定义为文档段组的一部份.包含七个基本对象:AUTO_SECTION_GROUP、BASIC_SECTION_GROUP、HTML_SECTION_GROUP、NEWS_SECTION_GROUP、NULL_SECTION_GROUP、XML_SECTION_GROUP、PATH_SECTION_GROUP.

    (4)相关词表(Wordlist)类

    相关词表标识用于索引的词干和模糊匹配查询选项的语言,只有一个基本对象BASIC_WORDLIST,其属性有:Fuzzy_Match、Fuzzy_Numresults、Fuzzy_Score、Stemmer、Substring_Index、Wildcard_Maxterms、Prefix_Index、Prefix_Max_Length、Prefix_Min_Length.

    (5)索引集(Index Set)

    索引集是一个或多个Oracle 索引 (不是Oracle Text索引) 的调集,用于成立 CTXCAT范例的Oracle Text索引,只有一个基本对象BASIC_INDEX_SET.

    (6)词法解析器(Lexer)类

    词法解析器类标识文本利用的语言,还肯定在文本中若何标识标志.默许的词法解析器是英语或其他西欧语言,用空格、尺度标点和非字母数字字符标识标志,同时禁用大小写.包含8个基本对象:BASIC_LEXER、CHINESE_LEXER、CHINESE_VGRAM_LEXER、JAPANESE_LEXER、JAPANESE_VGRAM_LEXER、KOREAN_LEXER、KOREAN__MORPH_ LEXER、MULTI_LEXER.

    (7)过滤器(Filter)类

    过滤器肯定若何过滤文本以成立索引.可以利用过滤器对文字处理器处理的文档、格局化的文档、纯文本和 HTML 文档成立索引,包含5个基本对象:CHARSET_FILTER、INSO_FILTER INSO、NULL_FILTER、PROCEDURE_FILTER、USER_FILTER.

    (8)非索引字表(Stoplist)类

    非索引字表类是用以指定一组不编入索引的单词 (称为非索引字).有两个基本对象:BASIC_STOPLIST (一种语言中的全部非索引字) 、 MULTI_STOPLIST (包含多种语言中的非索引字的多语言非索引字表).

    具体操作实践

    1、 成立词法解析器及相关词表

Begin

-- 定义一个词法解析器

ctx_ddl.drop_preference('cnlex');

ctx_ddl.create_preference('cnlex','CHINESE_LEXER'); --针对中文

-- 定义一个相关词表

ctx_ddl.create_preference('mywordlist', 'BASIC_WORDLIST');

ctx_ddl.set_attribute('mywordlist','PREFIX_INDEX','TRUE');

ctx_ddl.set_attribute('mywordlist','PREFIX_MIN_LENGTH',1);

ctx_ddl.set_attribute('mywordlist','PREFIX_MAX_LENGTH', 5);

ctx_ddl.set_attribute('mywordlist','SUBSTRING_INDEX', 'YES');

end;

// 上面的语句中,假如是针对英语语种则可以采取下面的语句来定义词法解析器

ctx_ddl.create_preference('mylex','BASIC_LEXER');

ctx_ddl.set_attribute('mylex','printjoins','_-');

    2、 在需求成立全文索引的表中成立索引(索引范例必须是 ctxsys.context,即利用上下文索引)

create index idx_person_desc on personinfo(persondesc)

indextype is ctxsys.context

parameters (

'DATASTORE CTXSYS.DIRECT_DATASTORE FILTER

CTXSYS.NULL_FILTER LEXER cnlex WORDLIST mywordlist');

-- 请注意此处采取的是NULL_FILTER过滤器,假如采取INSO_FILTER则不能对中文举行全文索引

    3、举行全文索引的同步

exec ctx_ddl.sync_index('idx_user_info', '20M');


  以上是“<b>详解Oracle数据库中文全文索引-入门底子</b>[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .