以下是创建全文索引的方法(网上有文章提到使用图形化界面,我用图形化界面创建全文索引,创建了一个晚上,第二天起床居然还没完。但用SQL命令15分钟左右就搞定):
对cmng_custominfo 表中的address字段做全文检索:
1,在oracle9201中需要创建一个分词的东西:
BEGIN
ctx_ddl.create_preference ('SMS_ADDRESS_LEXER', 'CHINESE_LEXER');
--ctx_ddl.create_preference ('my_lexer', 'chinese_vgram_lexer'); 不用
end;
2,创建全文检索:
CREATE INDEX INX_CUSTOMINFO_ADDR_DOCS ON cmng_custominfo(address) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('LEXER SMS_ADDRESS_LEXER');
3,查询时候,使用:
select * from cmng_custominfo where contains (address, '金色新城')>1;
4,需要定期进行同步和优化:
同步:根据新增记录的文本内容更新全文搜索的索引。
begin
ctx_ddl.sync_index('INX_CUSTOMINFO_ADDR_DOCS');
end;
优化:根据被删除记录清除全文搜索索引中的垃圾
begin
ctx_ddl.optimize_index('INX_CUSTOMINFO_ADDR_DOCS', 'FAST');
end;
-------------------------------------------------------------------------
5,采用job做步骤4中的工作:
1)该功能需要利用oracle的JOB功能来完成
因为oracle9I默认不启用JOB功能,所以首先需要增加ORACLE数据库实例的JOB配置参数:
job_queue_processes=5
重新启动oracle数据库服务和listener服务。
2)同步 和 优化
--同步 sync:
variable jobno number;
BEGIN
DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.sync_index(''INX_CUSTOMINFO_ADDR_DOCS'');', SYSDATE, 'SYSDATE + (1/24/4)');
commit;
END;
--优化
variable jobno number;
begin
DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.optimize_index(''INX_CUSTOMINFO_ADDR_DOCS'',''FULL'');', SYSDATE, 'SYSDATE + 1');
commit;
END;
其中, 第一个job的SYSDATE + (1/24/4)是指每隔15分钟同步一次,第二个job的SYSDATE + 1是每隔1天做一次全优化。具体的时间间隔,可以根据应用的需要而定
6,索引重建
重建索引会删除原来的索引,重新生成索引,需要较长的时间。
重建索引语法如下:
ALTER INDEX INX_CUSTOMINFO_ADDR_DOCS REBUILD;
据网上一些用家的体会,oracle重建索引的速度也是比较快的,有一用家这样描述:
Oracle 的全文检索建立和维护索引要比ms sql server都要快得多,笔者的65万记录的一个表建立索引只需要20分钟,同步一次只需要1分钟。
因此,也可以考虑用job的办法定期重建索引。
例如:
0.用sys进去 把ctxsys密码修改
1.赋权
在ctxsys用户下把ctx_ddl的执行权限赋于要使用全文索引的用户,例:
grant execute on ctx_ddl to csdba;
2.创建分词器:
BEGIN
ctx_ddl.create_preference ('my_lexer', 'CHINESE_LEXER');
end;
换csdba登录
3.创建全文检索:
CREATE INDEX it_Remark_index ON itskills(Remark) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('LEXER my_lexer')
4.修改SQL
5.同步
begin
ctx_ddl.sync_index('it_Remark_index');
end;
6.优化
begin
ctx_ddl.optimize_index('it_Remark_index', 'FAST');
end;
7.错误解决
(1)ORA-29855: 执行 ODCIINDEXCREATE 例行程序时出错
ORA-20000: Oracle Text
错误:
DRG-10509: 无效的文本列: ID
ORA-06512:
在 "CTXSYS.DRUE", line 160
ORA-06512:
在 "CTXSYS.TEXTINDEXMETHODS", line 364
查看错误堆栈的程序源?
原因:Oracle只支持在varchar,varchar2,clob,long类型上建全文索引
(2)
8.删除
//删除索引
drop index it_Remark_index 删除索引
//如果遇到某个索引无法删除请在删除索引后加force
如: drop index it_Remark_index force 强制删除索引
//删除分词器
BEGIN
ctx_ddl.drop_preference('my_lexer');
end;
分享到:
相关推荐
### MSSQL 2005 全文索引详尽解析 #### 1. 前言 在处理大量文本数据时,传统的索引方法往往无法满足高效查询的需求。为了解决这一问题,Microsoft SQL Server 2005 引入了全文索引技术。全文索引能够显著提高在...
SQL Server 2008 全文索引是一种高级的搜索技术,专为在大量文本数据中快速执行复杂的自然语言搜索而设计。全文索引与传统的B-tree索引有着本质的区别,后者主要用于数字和短文本字段,而全文索引则是为了解决在长...
在SQL Server 2000中,全文索引是一项强大的功能,它允许用户进行复杂的文本搜索,大大提高了从大量文本数据中检索信息的效率。全文索引与传统的基于关键字的索引不同,它能理解词汇的语法和语义,从而提供更精确、...
SQL Server作为一款成熟的数据库管理系统,提供了全文索引功能,它使得用户能够对存储在数据库中的大量文本数据执行快速、准确的查询。全文索引是一项特别重要的技术,尤其在网络环境中,用户往往需要快速定位到相关...
**全文索引示例** 在IT领域,全文索引是一种高效的数据检索技术,它使得数据库系统能够快速查找和定位文本中的关键词或短语。在本示例中,我们将探讨如何在.NET环境中,结合Windows Forms(WinForms)应用程序,对...
### SQL Server 全文索引的使用 #### 一、全文索引概述 在SQL Server中,全文索引是一种特殊类型的索引,主要用于提高文本数据的检索效率,尤其是在执行复杂模糊查询时。全文索引支持复杂的自然语言查询,能够帮助...
SQL Server 2005 的全文索引是其数据库管理系统中的一个重要特性,它允许用户对存储在text或ntext数据类型的列中的非结构化文本数据进行高效、灵活的搜索。全文索引通过创建一个预处理的索引,使得查询能够快速定位...
SQL Server 全文索引服务是数据库管理系统中用于高效处理文本搜索的重要功能,尤其是在大型数据集上进行复杂查询时。全文索引通过建立基于每个文本字段的词项索引来优化模糊搜索和精确搜索的性能。在SQL Server 7.0...
SQL全文索引是一种在数据库中实现全文搜索的技术,它允许用户使用自然语言查询数据库,而不仅仅是精确匹配。Sphinx是一个高性能、开源的全文搜索引擎,它为SQL数据库提供了强大的全文索引功能。Sphinx与SQL结合使用...
在IT领域,全文索引是一种高效检索文本数据的技术,它使得用户可以使用自然语言查询来查找相关文档。这里我们关注的是一个PHP版本的全文索引简单实现。在PHP中实现全文索引,主要涉及到两个核心步骤:分词和构建哈希...
WebSolrDemo是一个示例项目,它展示了如何在Web应用中实现全文检索和全文索引功能,使用的核心技术是Apache Solr。Apache Solr是一款开源的企业级搜索平台,能够处理大量数据并提供高效的全文检索能力。 全文检索是...
CoreSeek是一款专为中文环境设计的全文搜索引擎技术,它主要作为MySQL数据库的扩展,提供了高效、精准的全文索引解决方案。在MySQL的基础上,CoreSeek融入了Sphinx全文索引引擎,使得对中文文本的检索性能得到了显著...
### Oracle全文索引详解 #### 一、Oracle全文索引概述 Oracle全文索引是一种特殊类型的索引,它主要用于提高基于文本的查询性能。自从Oracle 7.3版本开始引入了这一特性,允许用户通过Oracle服务器提供的上下文...
Oracle全文索引是Oracle数据库系统中的一个重要特性,它允许用户对数据库中的文本数据进行高效的全文搜索。全文索引使得在海量文本数据中查找特定词汇或短语变得快速且简便,对于那些需要处理大量文本信息的应用程序...
全文索引是SQL Server数据库系统中一种高效检索长文本字段的技术,它极大地提升了在大量文本数据中搜索关键字的速度。全文索引不同于传统的B-tree结构索引,后者主要针对数值和较短的文本字段。全文索引利用了特定的...
Sql2005全文索引详解 全文索引是SQL Server 2005中引入的一种高级搜索功能,专门用于处理长度较长的文本字段,如文章内容、文档摘要等。传统索引通常针对数字和短文本字段,对于长文本的查询效率较低。全文索引通过...
`indexer4j`是一个基于Java的开源项目,专门用于实现全文索引和检索功能。在信息技术领域,全文索引和检索是搜索引擎的核心技术,它允许用户通过输入关键词快速找到包含这些关键词的文档或信息。在Java开发中,`...
oracle 全文检索 oracle全文索引 多列字段检索,匹配多列字段搜索功能。