当前位置:  数据库>oracle

Oracle全文搜索中文

    来源: 互联网  发布时间:2017-05-02

    本文导语: Oracle从7.3开始支持全文检索,即用户可以使用Oracle服务器的上下文(ConText)选项完 成基于文本的查询。具体可以采用通配符查找、模糊匹配、相关分类、近似查找、条件加权和词意扩充等方法。在Oracle8.0.x中 称为ConText ;在Oracl...

Oracle从7.3开始支持全文检索,即用户可以使用Oracle服务器的上下文(ConText)选项完 成基于文本的查询。具体可以采用通配符查找、模糊匹配、相关分类、近似查找、条件加权和词意扩充等方法。在Oracle8.0.x中 称为ConText ;在Oracle8i中 称为interMedia Text ; Oracle9i以后称为Oracle Text。下面通过示例了解一下oracle全文检索。

分派用户相应权限

grant connect,resource to scott;
grant ctxapp to scott;
alter user portal default role all;
--对象权限
grant execute on ctx_ddl to scott;



解锁ctxsys用户
alter user ctxsys account unlock identified by ctxsys;

用应用用户登录,设置搜索器类型
SQL> conn scott/tiger;

BEGIN
    ctx_ddl.create_preference ('main_lexer','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;
/
这里说一下词法分析器(lexer) ,词法分析器有三种:
1)basic_lexer: 针对英语。它能根据空格和标点来 将英语单词从句子中分离,还能自动将一些出现频率过高已经失去检索意义的单词作为‘垃圾’处理,如if , is 等,具有较高的处理效率。但只认空格和标点,而汉语的一句话中通常不会有空格,会把整句话作为一个组,事实上失去检索能力。
2)chinese_vgram_lexer: 专门的汉语分析器,支持所有汉字 字符集(ZHS16CGB231280 ZHS16GBK ZHT32EUC ZHT16BIG5 ZHT32TRIS ZHT16MSWIN950 ZHT16HKSCS UTF8 )。但分词方法太简单,每个组合都作为一个词,既占用空间又效率不高。
3)chinese_lexer: 这是一个新的汉语分析器,只支持utf8字符集。chinese_lexer的最大改进就是能认识大部分常用汉语词汇,因此能更有效率地分析句子。











创建示例数据
create table docs( id number, name varchar2(200), address varchar2(2000) );
insert into docs values(1,'John Smith','Room 403,No.37,ShiFan Residential Quarter,BaoShan District');
insert into docs values(2,'Noah Abelard','Room 201,No.34,Lane 125,XiKang Road(South),HongKou District');
insert into docs values(3,'Michael Cole','Room 42, Zhongzhou Road,Nanyang City, Henan Prov. ');
insert into docs values(4,'Thomas Matthew','Hongyuan Hotel, Jingzhou city, Hubei Prov. ');
insert into docs values(5,'Joseph','Special Steel Corp,No.272, Bayi Road,Nanyang City, Henan Prov. ');
insert into docs values(6,'Lauren','Room 702, 7th Building, Hengda Garden, East District, Zhongshan ');
insert into docs values(7,'Kevin Victoria','Room 601, No.34 Long Chang Li, Xiamen, Fujian ');
insert into docs values(8,'Michael','Cheng Nuo Ban, Gong Jiao Zong Gong Si, Xiamen, Fujian ');
insert into docs values(9,'Timothy Katherine','NO. 204,Entrance A, Building NO. 1, The 2nd Dormitory of the NO. 4 State-owned Textile Factory, 53 Kaiping Road, Qingdao, Shandong');
insert into docs values(10,'Zhou Wangcai','Room 601, No.34 Long Chang Li,Xiamen, Fujian, China 361012');
insert into docs values(11,'Sebastian Jared','Cheng Nuo Ban, Gong Jiao Zong Gong SiXiamen, Fujian, China 361004');
insert into docs values(12,'Jenna','NO. 204, A, Building NO. 1,The 2nd Dormitory of the NO. 4 State-owned Textile Factory,53 Kaiping Road, Qingdao,Shandong, China 266042 ');
insert into docs values(13,'Catherine','Room403,No.37,SiFanResidentialQuarter,BaoShanDistrict');
insert into docs values(14,'Sebastian Cole','1 Team CaiQi ChuanXiBei Mining Area JiangYou City SiChuan Province China');
insert into docs values(15,'Timothy Jared ','Room 201,No.34,Lane 125,XiKang Road(South),HongKou District');
insert into docs values(16,'张三','中国北京朝阳区北小营亚运花园1号楼8B');
insert into docs values(17,'李四','上海世纪大道1500号9楼');
insert into docs values(18,'王五','四川成都经济技术开发区世纪大道515号');
/



















对文本列建立文档CONTEXT索引,并且指定搜索器/过滤器/单词列表/
CREATE INDEX  idx_docs_address ON docs(address) 
indextype is ctxsys.context parameters 
('DATASTORE CTXSYS.DIRECT_DATASTORE FILTER CTXSYS.INSO_FILTER  LEXER main_lexer WORDLIST mywordlist'); 



    
 
 

您可能感兴趣的文章:

  • 安装Oracle9i时的中文问题,求助!!!!!!!
  • Linux平台下Oracle9i数据库正确显示中文的设置
  • oracle中文乱码解决的办法
  • oracle8.1.7在RedHat7.2下安装后,怎么不支持中文?
  • 急急急!用 jdbc取 oracle 中中文数据的显示问题?
  • 我用jbuilder调用oracle的数据库,但其中的中文显示的是乱码,怎么解决?
  • 在jsp输入中文->servlet->Session Bean->EntityBean->Oracle就变成一堆?????号。
  • 请问jboss+oracle文件怎样配置,数据库中文字段不为乱码
  • RED HAT 7.2 ,安装ORACLE9I时,安装向导的中文全为乱码!
  • Oracle 中文字段进行排序的sql语句
  • jsp读取oracle8.1.6数据表中的中文,读出为?,着急啊。
  • 谁那里有《Oracle Database 10g完全参考手册》中文版的电子书啊?发给我好吗
  • 急!急!100分问题求解(不够可加)输入中文到oracle数据库乱码的问题
  • oracle中文乱码的解决方法
  • oracle9i安装时.installer启动后,界面无法显示中文.
  • linux 环境下 odbc程序 往oracle数据库insert 中文 乱码问题,请教高手,急!!!!在线等~~
  • 为什么unix下从oracle检索出来的中文显示的是?????? 呢?
  • 取Oracle数据库中的中文数据乱码的问题!!急:在线等待
  • Oracle Enterprise Linux下的中文显示
  • linux下Tomcat4,javaservlet中文问题(oracle数据库)
  • oracle10g全文索引自动同步语句使用方法
  • 使用Oracle Text进行全文检索
  • Oracle全文索引设置
  • Oracle9i的全文检索技术开发者网络Oracle
  • oracle10g全文索引自动同步语句使用方法 iis7站长之家
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,