大家好,小编来为大家解答以下问题,全文检索是一种查询全面,全文型检索工具有哪些,现在让我们一起来看看吧!
什么是全文检索技术?
全文检索,是指直接以全文本信息作为主要处理对象,并根据数据资料的内容而不是外在特征来实现的信息检索手段。它的基本工作方式是能够将所有包含检索词的文献检索出来,不管这个词出现在文献的什么位置,或者说文献中的任意一个词都可以作为检索到该文献的条件。
全文检索提供存取全文文本(指原始记录)的空间,文本中任何字符和字符串均可作为检索的入口点,全文检索是以原始记录中的检索词、字间的特定位置为对象的运算,对文献不作标引,故没有标引用词。因此,全文检索是一种可以不依赖叙词表而直接使用自由词的检索方法。
Oracle全文检索是什么意思?
全文检索是一种将文件中所有文本与检索项匹配的文字资料检索方法。全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统。
判断检索效果的两个指标:
查全率=被检出相关信息量/相关信息总量(%)
查准率=被检出相关信息量/被检出信息总量(%)
Oracle全文检索配置方法:
1.检查数据库是否具有全文检索功能(这是针对已经建成使用的数据库)
查看用户中是否存在ctxsys用户,查询角色里是否存在ctxapp角色。以上两个中的1个不满足(不存在),则说明没有装过全文检索功能。
使用contains函数的时候,若没有全文检索则会报错的。
2.若没有,则需要手动建立,先建立全文检索要使用的空间。
sqlplus / as sysdba --进入控制台。
create tablespace Idx_ctxsys datafile '/oradata/sg186fx/ctxsys01.dbf size 10240M autoextend on next 32M maxsize 20480M;--创建全文检索使用的表空间。
3.创建全文检索使用的用户和角色及相应的包,则需要执行oracle自带的一个脚本:cd $ORACLE_HOME/ctx/admin/catctx.sql。
还是在sqlplus中执行:
@?/ctx/admin/catctx.sql ctxsys Idx_ctxsys temp nolock。
在执行这个脚本的时候,输入了几个参数,第一个参数ctxsys为ctxsys用户的密码。
第二个参数Idx_ctxsys为ctxsys用户要使用的表空间。
第三个参数temp为ctxsys用户使用的临时表空间。
第四个参数nolock为ctxsys用户处于解锁状态。
4.创建完成后,要登录ctxsys用户。
connect ctxsys/ctxsys。
执行以下脚本:@?/ctx/admin/defaults/drdefus.sql(这是个很重要的脚本,后面创建索引会使用该脚本创建的信息)。
5.创建全文索引语法分析器
先要明确使用全文索引的用户,我要使用全文索引的是sgpm用户。
因此
grant execute on ctxsys.ctx_ddl to sgpm with grant option;。
connect sgpm/sgpm。
设置语法分析器:
exec ctx_ddl.drop_preference('chinalexer');。
exec ctx_ddl.create_preference('chinalexer','chinese_lexer');。
设置词法属性:exec ctx_ddl.drop_preference('idx_c_store');。
begin
ctx_ddl.create_preference('idx_c_store','BASIC_STORAGE');。
ctx_ddl.set_attribut('idx_c_store','I_TABLE_CLAUSE','tablespaces Idx_ctxsy');。
ctx_ddl.set_attribute('idx_c_store','I_INDEX_CLAUSE','tablespace Idx_ctxsy compress 2');。
end;
6.创建索引
create index sgpm.idx_c_cons_name on sgpm.c_cons(cons_name) indextype is ctxsys.context parameters('lexer chinalexer storage idx_c_store');。
7.同步索引
variable jobno number;。
begin
dbms_job.submit(:jobno,'pkg_sp_tools.p_cont_sys_index();',sysdate,'trunc(sysdate)+19/24+1'); --执行的是个性化方法。
end;
普通的就是用:
exec ctx_ddl.sync_index('idx_c_cons_name');。
到此,全文检索创建成功,contains函数就可以正常使用了。
注意:创建的过程中会出现ORA-29879:cannot create multiple domain index on a column listusing same indextype ,这说明在其他用户下已经建立了该索引。
什么叫全文搜索引擎
百度(Baidu)、 谷歌(Google)就是典型的全文搜索引擎。它们都是通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户。
从搜索结果来源的角度,全文搜索引擎又可细分为两种,一种是拥有自己的检索程序(Indexer),俗称“蜘蛛”(Spider)程序或“机器人”(Robot)程序,并自建网页数据库,搜索结果直接从自身的数据库中调用,如上面提到的baidu、google;另一种则是租用其他引擎的数据库,并按自定的格式排列搜索结果,如国外的Lycos引擎。
全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。
什么是全文检索啊?
全文检索是计算机程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置。当用户查询时根据建立的索引查找,类似于通过字典的检索字表查字的过程。
全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统。
在功能上,全文检索系统需要具有建立索引,处理查询返回结果集,增加索引,优化索引结构等功能。结构上,全文检索系统具有索引引擎,查询引擎,文本分析引擎和对外接口等。
目前,在全文检索特别是全文检索系统方面,北京迅奥科技做的还不错,因为他是这方面的专家。迅奥全文检索系统是自然语言处理技术与海量内容管理技术的完美结合,它对网页、文本、电子文档和图像等非结构化的信息提供强大的管理功能,能有效地解决以上问题。
Oracle全文检索是什么意思?
你这里的全文检索,我的理解就是全表扫描。
你要查询某个表里面的数据,全表的话,语句简单:
select
from
table_name;
至于建立索引,如果你的表里面的列值选择性低,那可以在这个列上面创建索引,索引的结构你可以这样理解:
索引列的值+rowid
rowid指向存储这个记录的物理块,oracle根据rowid去找数据的话更快。
oracle会自动选择是全表扫描还是索引扫描,你不需要去管他,你需要那些列,就查那些列就是了。