This chapter describes the special characters that can be used in Text queries. In addition, it provides a list of the words and characters that Oracle Text treats as reserved words and characters.
The following topics are covered in this chapter:
The grouping characters control operator precedence by grouping query terms and operators in a query expression. The grouping characters are:
Table 4-1 Characters for Grouping Query Terms
Grouping Character | Description |
---|---|
( ) | The parentheses characters serve to group terms and operators found between the characters |
[ ] | The bracket characters serve to group terms and operators found between the characters; however, they prevent penetrations for the expansion operators (fuzzy, soundex, stem). |
The beginning of a group of terms and operators is indicated by an open character from one of the sets of grouping characters. The ending of a group is indicated by the occurrence of the appropriate close character for the open character that started the group. Between the two characters, other groups may occur.
For example, the open parenthesis indicates the beginning of a group. The first close parenthesis encountered is the end of the group. Any open parentheses encountered before the close parenthesis indicate nested groups.
To query on words or symbols that have special meaning to query expressions such as and & or| accum, you must escape them. There are two ways to escape characters in a query expression:
Table 4-2 Characters for Escaping Query Terms
Escape Character | Description |
---|---|
{} | Use braces to escape a string of characters or symbols. Everything within a set of braces in considered part of the escape sequence.
When you use braces to escape a single character, the escaped character becomes a separate token in the query. |
\ | Use the backslash character to escape a single character or symbol. Only the character immediately following the backslash is escaped. For example, a query of blue\-green matches blue-green and blue green. |
In the following examples, an escape sequence is necessary because each expression contains a Text operator or reserved symbol:
'high\-voltage' '{high-voltage}' 'XY\&Z' '{XY&Z}'
In the first example, the query matches high-voltage or high voltage.
Note that in the second example, a query on XY&Z will return 'XY Z', 'XY-Z', 'XY*Z', and so forth, as well as 'XY&Z'. This is because non-alphabetic characters are treated as whitespace (so XY&Z is treated as 'XY Z'). To match only XY&Z, you must declare & as a printjoin. (If you do, however, XY&Z will not match 'XY & Z'.) For more on printjoins, see BASIC_LEXER.
Note: If you use braces to escape an individual character within a word, the character is escaped, but the word is broken into three tokens.For example, a query written as high{-}voltage searches for high - voltage, with the space on either side of the hyphen. |
The open brace { signals the beginning of the escape sequence, and the closed brace } indicates the end of the sequence. Everything between the opening brace and the closing brace is part of the escaped query expression (including any open brace characters). To include the close brace character in an escaped query expression, use }}
.
To escape the backslash escape character, use \\
.
Table 4-3 lists the Oracle Text reserved words and characters that must be escaped when you want to search them in CONTAINS
queries:
Table 4-3 Reserved Words and Characters
Reserved Words | Reserved Characters | Operator |
---|---|---|
ABOUT | (none) | ABOUT |
ACCUM | , | Accumulate |
AND | & | And |
BT | (none) | Broader Term |
BTG | (none) | Broader Term Generic |
BTI | (none) | Broader Term Instance |
BTP | (none) | Broader Term Partitive |
EQUIV | = | Equivalence |
FUZZY | ? | fuzzy |
(none) | { } | escape characters (multiple) |
(none) | \ | escape character (single) |
(none) | ( ) | grouping characters |
(none) | [ ] | grouping characters |
HASPATH | (none) | HASPATH |
INPATH | (none) | INPATH |
MDATA | (none) | MDATA |
MINUS | - | MINUS |
NEAR | ; | NEAR |
NOT | ~ | NOT |
NT | (none) | Narrower Term |
NTG | (none) | Narrower Term Generic |
NTI | (none) | Narrower Term Instance |
NTP | (none) | Narrower Term Partitive |
OR | | | OR |
PT | (none) | Preferred Term |
RT | (none) | Related Term |
(none) | $ | stem |
(none) | ! | soundex |
SQE | (none) | Stored Query Expression |
SYN | (none) | Synonym |
(none) | > | threshold |
TR | (none) | Translation Term |
TRSYN | (none) | Translation Term Synonym |
TT | (none) | Top Term |
(none) | * | weight |
(none) | % | wildcard character (multiple) |
(none) | _ | wildcard character (single) |
WITHIN | (none) | WITHIN |