Table of Contents
- Title and Copyright Information
- Preface
- 1 Understanding Oracle Text Application Development
- 2 Getting Started with Oracle Text
-
3
Indexing with Oracle Text
- 3.1 About Oracle Text Indexes
-
3.2
Considerations for Oracle Text Indexing
- 3.2.1 Location of Text
- 3.2.2 Supported Column Types
- 3.2.3 Storing Text in the Text Table
- 3.2.4 Storing File Path Names
- 3.2.5 Storing URLs
- 3.2.6 Storing Associated Document Information
- 3.2.7 Format and Character Set Columns
- 3.2.8 Supported Document Formats
- 3.2.9 Summary of DATASTORE Types
- 3.2.10 Document Formats and Filtering
- 3.2.11 Bypass Rows
- 3.2.12 Document Character Set
- 3.3 Document Language
- 3.4 Special Characters
- 3.5 Case-Sensitive Indexing and Querying
- 3.6 Improved Document Services Performance with a Forward Index
- 3.7 Language-Specific Features
- 3.8 About Entity Extraction and CTX_ENTITY
- 3.9 About Fuzzy Matching and Stemming
- 3.10 Better Wildcard Query Performance
- 3.11 Document Section Searches
- 3.12 Stopwords and Stopthemes
- 3.13 Index Performance
- 3.14 Query Performance and Storage of Large Object (LOB) Columns
- 3.15 Mixed Query Performance
- 3.16 In-Memory Full Text Search and JSON Full Text Search
-
4
Creating Oracle Text Indexes
- 4.1 Summary of the Procedure for Creating an Oracle Text Index
- 4.2 Creating Preferences
- 4.3 Section Searching Example: Creating HTML Sections
- 4.4 Using Stopwords and Stoplists
-
4.5
Creating a CONTEXT Index
- 4.5.1 CONTEXT Index and DML
- 4.5.2 Default CONTEXT Index Example
- 4.5.3 Incrementally Creating an Index with ALTER INDEX and CREATE INDEX
- 4.5.4 Incrementally Creating a CONTEXT Index with POPULATE_PENDING
- 4.5.5 Custom CONTEXT Index Example: Indexing HTML Documents
- 4.5.6 CONTEXT Index Example: Query Processing with FILTER BY and ORDER BY
- 4.5.7 DATASTORE Triggers in Release 12c
- 4.6 Creating a CTXCAT Index
- 4.7 Creating a CTXRULE Index
- 4.8 Creating a Search Index for JSON
- 4.9 Creating an Oracle Text Search Index
- 5 Maintaining Oracle Text Indexes
-
6
Querying with Oracle Text
- 6.1 Overview of Queries
- 6.2 Oracle Text Query Features
-
7
Working with CONTEXT and CTXCAT Grammars in Oracle Text
-
7.1
The CONTEXT Grammar
- 7.1.1 ABOUT Query
- 7.1.2 Logical Operators
- 7.1.3 Section Searching and HTML and XML
- 7.1.4 Proximity Queries with NEAR, NEAR_ACCUM, and NEAR2 Operators
- 7.1.5 Fuzzy, Stem, Soundex, Wildcard and Thesaurus Expansion Operators
- 7.1.6 Using CTXCAT Grammar
- 7.1.7 Defined Stored Query Expressions
- 7.1.8 Calling PL/SQL Functions in CONTAINS
- 7.1.9 Optimizing for Response Time
- 7.1.10 Counting Hits
- 7.1.11 Using DEFINESCORE and DEFINEMERGE for User-Defined Scoring
- 7.2 The CTXCAT Grammar
-
7.1
The CONTEXT Grammar
- 8 Presenting Documents in Oracle Text
- 9 Classifying Documents in Oracle Text
-
10
Tuning Oracle Text
- 10.1 Optimizing Queries with Statistics
-
10.2
Optimizing Queries for Response Time
- 10.2.1 Other Factors That Influence Query Response Time
- 10.2.2 Improved Response Time with the FIRST_ROWS(n) Hint for ORDER BY Queries
- 10.2.3 Improved Response Time Using the DOMAIN_INDEX_SORT Hint
- 10.2.4 Improved Response Time Using the Local Partitioned CONTEXT Index
- 10.2.5 Improved Response Time with the Local Partitioned Index for Order by Score
- 10.2.6 Improved Response Time with the Query Filter Cache
- 10.2.7 Improved Response Time Using the BIG_IO Option of CONTEXT Index
- 10.2.8 Improved Response Time Using the SEPARATE_OFFSETS Option of the CONTEXT Index
- 10.2.9 Improved Response Time Using the STAGE_ITAB, STAGE_ITAB_MAX_ROWS, and STAGE_ITAB_PARALLEL Options of CONTEXT Index
- 10.3 Optimizing Queries for Throughput
- 10.4 Composite Domain Index in Oracle Text
- 10.5 Performance Tuning with CDI
- 10.6 Solving Index and Query Bottlenecks by Using Tracing
- 10.7 Using Parallel Queries
- 10.8 Tuning Queries with Blocking Operations
-
10.9
Frequently Asked Questions About Query Performance
- 10.9.1 What is query performance?
- 10.9.2 What is the fastest type of Oracle Text query?
- 10.9.3 Should I collect statistics on my tables?
- 10.9.4 How does the size of my data affect queries?
- 10.9.5 How does the format of my data affect queries?
- 10.9.6 What is the difference between an indexed lookup and a functional lookup
- 10.9.7 What tables are involved in queries?
- 10.9.8 How is the $R table contention reduced?
- 10.9.9 Does sorting the results slow a text-only query?
- 10.9.10 How do I make an ORDER BY score query faster?
- 10.9.11 Which memory settings affect querying?
- 10.9.12 Does out-of-line LOB storage of wide base table columns improve performance?
- 10.9.13 How can I speed up a CONTAINS query on more than one column?
- 10.9.14 Can I have many expansions in a query?
- 10.9.15 How can local partition indexes help?
- 10.9.16 Should I query in parallel?
- 10.9.17 Should I index themes?
- 10.9.18 When should I use a CTXCAT index?
- 10.9.19 When is a CTXCAT index NOT suitable?
- 10.9.20 What optimizer hints are available and what do they do?
-
10.10
Frequently Asked Questions About Indexing Performance
- 10.10.1 How long should indexing take?
- 10.10.2 Which index memory settings should I use?
- 10.10.3 How much disk overhead will indexing require?
- 10.10.4 How does the format of my data affect indexing?
- 10.10.5 Can parallel indexing improve performance?
- 10.10.6 How can I improve index performance when I create a local partitioned index?
- 10.10.7 How can I tell how much indexing has completed?
- 10.11 Frequently Asked Questions About Updating the Index
-
11
Searching Document Sections in Oracle Text
- 11.1 About Oracle Text Document Section Searching
- 11.2 HTML Section Searching with Oracle Text
-
11.3
XML Section Searching with Oracle Text
- 11.3.1 Automatic Sectioning
- 11.3.2 Attribute Searching
- 11.3.3 Document Type Sensitive Sections
-
11.3.4
Path Section Searching
- 11.3.4.1 Creating an Index with PATH_SECTION_GROUP
- 11.3.4.2 Top-Level Tag Searching
- 11.3.4.3 Any-Level Tag Searching
- 11.3.4.4 Direct Parentage Searching
- 11.3.4.5 Tag Value Testing
- 11.3.4.6 Attribute Searching
- 11.3.4.7 Attribute Value Testing
- 11.3.4.8 Path Testing
- 11.3.4.9 Section Equality Testing with HASPATH
- 12 Using Oracle Text Name Search
- 13 Performing Ubiquitous Search with DBMS_SEARCH APIs
-
14
Working with a Thesaurus in Oracle Text
- 14.1 Overview of Oracle Text Thesaurus Features
- 14.2 Defining Terms in a Thesaurus
- 14.3 Using a Thesaurus in a Query Application
- 14.4 Loading a Custom Thesaurus and Issuing Thesaurus-Based Queries
- 14.5 Augmenting the Knowledge Base with a Custom Thesaurus
- 14.6 Linking New Terms to Existing Terms
- 14.7 Example of Loading a Thesaurus with ctxload
- 14.8 Example of Loading a Thesaurus with the CTX_THES.IMPORT_THESAURUS PL/SQL procedure
- 14.9 Compiling a Loaded Thesaurus
- 14.10 About the Supplied Knowledge Base
- 15 Using Faceted Navigation
-
16
Using Result Set Interface
- 16.1 Overview of the XML Query Result Set Interface
- 16.2 Using the XML Query Result Set Interface
- 16.3 Creating XML-Only Applications with Oracle Text
- 16.4 Example of a Result Set Descriptor
- 16.5 Identifying Collocates
- 16.6 Overview of the JSON Result Set Interface
- 16.7 Using the JSON Result Set Interface
- 17 Performing Sentiment Analysis Using Oracle Text
-
18
Administering Oracle Text
- 18.1 Oracle Text Users and Roles
- 18.2 DML Queue
- 18.3 CTX_OUTPUT Package
- 18.4 CTX_REPORT Package
- 18.5 Text Manager in Oracle Enterprise Manager
- 18.6 Servers and Indexing
- 18.7 Tracking Database Feature Usage in Oracle Enterprise Manager
- 18.8 Oracle Text on Oracle Real Application Clusters
- 18.9 Configuring Oracle Text in Oracle Database Vault Environment
- 18.10 Unsupported Oracle Text Operations in Oracle Database Vault Realm
- 18.11 Export and Import of Schemas Containing Oracle Text Settings
- 19 Migrating Oracle Text Applications
- A CONTEXT Query Application
- B CATSEARCH Query Application
-
C
Custom Index Preference Examples
- C.1 Datastore Examples
- C.2 NULL_FILTER Example: Indexing HTML Documents
- C.3 PROCEDURE_FILTER Example
- C.4 BASIC_LEXER Example: Setting Printjoin Characters
- C.5 MULTI_LEXER Example: Indexing a Multilanguage Table
- C.6 BASIC_WORDLIST Example: Enabling Substring and Prefix Indexing
- C.7 BASIC_WORDLIST Example: Enabling Wildcard Index