`
ahuzl007
  • 浏览: 25728 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

LIKE索引,以及全文检索索引

 
阅读更多

有空再翻译

通常、Oracle Databaseからデータを検索する際に、文章の途中の文言を検索条件にする場合には、LIKEキーワードを条件指定しているかと思います。

(例) Like 検索
SQL> select * from doc where text like '%東京購%' ;

Like検索での中間一致・後方一致の場合(%で始まる条件の時)は索引(INDEX)は使われません。
データ(文章)を頭から読み込んで、条件に一致するかをすべて照らし合わせて(マッチング)結果を求めます。
一般的に、データベースから大量のデータの検索を高速にするために、索引(INDEX)を使います。
そのため、Like検索ではデータ量が多くなればなるほど、処理にかかる時間がかかることになります。

それに対して、Oracle Databaseには「Oracle Text」という標準の全文検索の機能があります。
Oracle Textでは、文章の途中に有る(中間一致)データに対しても、索引が使われます。
下の例に有るように、SQL文で処理できるので特別な作りこみは必要ありません。

(例) Oracle Textでの全文検索
SQL> select * from doc where contains(text,'東京購') > 0;

Oracle Textの使い方

0.以下のようなテーブルにデータが入っているとします。

1.利用するユーザに権限(ctxapp)を与えます。

SQL> connect / as sysdba
SQL> grant ctxapp to <ユーザ名>;

2.プリファレンス(全文検索対象のデータがどんなものかを示す指定)を作成します。

SQL> connect <ユーザ名>/<パスワード>
SQL> begin
2 ctx_ddl.create_preference('<プリファレンス名>',
3 'JAPANESE_VGRAM_LEXER');
4 end;
5 /

3.全文検索用の索引を作成します。CONTENT索引タイプを指定します。

SQL> create index <索引名> on <表名>(<列名:>)
2 indextype is ctxsys.context
3 parameters ('lexer <プリファレンス名> ');

索引が作成されました。

4.全文検索を実行します。where句にCONTAINSという演算子を使用します。

SQL> select <列名> from <表名>
2 where contains (<列名>,'<検索文字列>')>0;


このように、SQL文のみで設定~実行までが可能です。
Oracle Databaseのみで使える機能なので、追加のアプリケーションを導入したり、作りこむ必要が無いのです。

 

转自:https://blogs.oracle.com/oracle4engineer/entry/oracleoracle_text

分享到:
评论

相关推荐

    oracle全文检索

    Oracle全文检索技术是数据库管理系统Oracle中用于高效查找和分析文本数据的一种功能。它在不同的Oracle版本中有着不同的名称,如Oracle8.0.x中的ConText,Oracle8i中的interMedia Text,以及从Oracle9i开始的Oracle ...

    基于Oracle的文献资料库全文检索技术

    使用Oracle Text进行检索一般涉及五个步骤:设置首选项、装载文本信息、为文本信息制作索引、对文本信息进行查询以及对查询结果进行必要的处理。其中,制作索引是最为关键的步骤之一。 - **设置首选项**:对于英文...

    全文检索使用国产达梦数据库实现全文检索的详细说明和实践探索

    全文索引是实现全文检索的基础。在达梦数据库中,可以通过以下步骤创建全文索引: - 首先,需要创建一个包含待检索数据的表。例如,这里创建了一个名为`famous_novles`的表,包含了一些关于中国古代四大名著的信息...

    SQL Server全文检索简介(上).pdf

    由于全文检索索引的特殊性,它能够处理包含任意顺序的多个关键词的搜索需求,例如,在“恒逸信息讲师胡百敬”的例子中,使用全文检索索引,无论关键词顺序如何,都可以找到包含这些关键词的记录。 全文检索在...

    Sql2008_全文索引详解

    全文索引的创建和管理可以通过SQL Server Management Studio进行,包括设置全文目录、选择索引列、定义语言分析规则和筛选器,以及控制全文索引的填充策略。此外,还可以通过T-SQL语句进行编程式操作。 总的来说,...

    大数据与数据挖掘技术 FirteX-高性能全文索引和检索平台 共29页.pptx

    大数据与数据挖掘技术在现代信息时代扮演着至关重要的角色,而FirteX作为一个高性能全文索引和检索平台,正是应对这一挑战的重要工具。FirteX的出现旨在提供比现有平台如Lucene和Lemur更高效、更灵活的解决方案。 ...

    MySQL全文索引、联合索引、like查询、json查询速度哪个快

    本文将深入探讨全文索引、联合索引、LIKE查询以及JSON查询这四种不同方法在实际应用中的速度比较,并通过实例进行详细解析。 首先,全文索引(Full-text Index)是MySQL提供的一种特殊类型的索引,专门用于提高全文...

    SQL Server2000中的全文检索.pdf

    全文检索的核心功能包括全文索引器的创建和使用,以及一系列相关的Transact-SQL操作。 全文索引器是用于创建和填充全文目录的组件,这些目录存储在SQL Server的内部结构中,并由Microsoft搜索服务进行维护和管理。...

    横瓜数据库全文检索中间件

    你无需对自己的数据库文件做任何更改,就可以为数据库文件创建可供编程语言调用的ActiveX DLL全文检索接口,可用于任何与数据库检索有关的查询,例如全文搜索、垂直搜索、海量数据库LIKE式快速查询等。软件主要特点...

    Sphinx 全文检索实践指南 - 介绍.pdf

    51CTO技术沙龙第19期讲义:Sphinx 全文检索实践指南主讲:李沫南部分主要内容:全文检索 VS 数据库检索SELECT * FROM documents WHERE title like '%test%'CPU 100%'30秒内只能进行一次查询'没有找到记录......

    SQL Server2008中全文检索的实现.pdf

    全文检索技术克服了传统SQL查询在处理大量文本数据时的局限性,特别是不能使用LIKE谓词查询格式化的二进制数据,以及在海量数据中执行LIKE查询可能导致的效率低下问题。 全文索引的核心是通过创建索引,将文本数据...

    Solr全文索引

    Solr全文索引是基于Apache Lucene的开源搜索服务器,它提供了一个分布式、可扩展、高性能的全文检索和分析平台。在本项目中,"Weiz.Solr"似乎是一个C#开发的Solr客户端库,用于简化与Solr服务器的交互。下面将详细...

    mysql实现全文检索

    要在MySQL中实现全文检索,首先需要创建一个包含全文索引的表。创建时,需要指定哪些字段将用于全文检索。例如: ```sql CREATE TABLE 表名 ( cCode CHAR(10), sTitle VARCHAR(250), sContent TEXT, FULLTEXT...

    《Oracle_全文索引_详细介绍》_40页.pdf

    ### Oracle全文索引详解 #### 一、Oracle全文索引概述 Oracle全文索引是一种特殊类型的索引,它主要用于提高基于文本的查询性能。自从Oracle 7.3版本开始引入了这一特性,允许用户通过Oracle服务器提供的上下文...

    SQLSERVER全文索引的使用

    在SQL Server中,全文索引是一种特殊类型的索引,主要用于提高文本数据的检索效率,尤其是在执行复杂模糊查询时。全文索引支持复杂的自然语言查询,能够帮助用户快速定位到含有特定词语或短语的数据记录。 #### 二...

    ORACLE 全文检索实例.rar

    首先,Oracle全文检索的基础是Oracle Text,这是Oracle数据库的一个组件,它支持对非结构化数据进行索引和搜索。Oracle Text通过创建索引来存储文本信息,这些索引可以快速定位和检索相关文档。在构建全文检索的过程...

Global site tag (gtag.js) - Google Analytics