H Stopword Transformations in Oracle Text
This appendix describes the stopword rewrites or transformations for each operator. In all tables, the Stopword Expression column describes the query expression or component of a query expression, while the right-hand column describes the way Oracle Text rewrites the query.
This appendix contains the following topics:
H.1 Understanding Stopword Transformations
When you use a stopword or stopword-only phrase as an operand for a query operator, Oracle Text rewrites the expression to eliminate the stopword or stopword-only phrase and then executes the query.
The token stopword stands for a single stopword or a stopword-only phrase.
The token non_stopword stands for either a single non-stopword, a phrase of all non-stopwords, or a phrase of non-stopwords and stopwords.
The token no_lex stands for a single character or a string of characters that is neither a stopword nor a word that is indexed. For example, the + character by itself is an example of a no_lex token.
When the Stopword Expression column completely describes the query expression, a rewritten expression of no_token means that no hits are returned when you enter such a query.
When the Stopword Expression column describes a component of a query expression with more than one operator, a rewritten expression of no_token means that a no_token value is passed to the next step of the rewrite.
Transformations that contain a no_token as an operand in the Stopword Expression column describe intermediate transformations in which the no_token is a result of a previous transformation. These intermediate transformations apply when the original query expression has at least one stopword and more than one operator.
For example, consider the following compound query expression:
'(this NOT dog) AND cat'
Assuming that this is the only stopword in this expression, Oracle Text applies the following transformations in the following order:
stopword NOT non-stopword => no_token
no_token AND non_stopword => non_stopword
The resulting expression is:
'cat'
H.2 About Stopwords in Phrase Queries
If used in a phrase query, a stopword will match any single word, whether that word is a stopword or not. For example, if "in" and "to" are stopwords, but "throughout" is not, then the query "hiking in California" will match any of these phrases:
- 
                        hiking in California 
- 
                        hiking to California 
- 
                        hiking throughout California 
H.3 Word Transformations
| Stopword Expression | Rewritten Expression | 
|---|---|
| stopword | no_token | 
| no_lex | no_token | 
The first transformation means that a stopword or stopword-only phrase by itself in a query expression results in no hits.
The second transformation says that a term that is not lexed, such as the + character, results in no hits.
H.4 AND Transformations
| Stopword Expression | Rewritten Expression | 
|---|---|
| non_stopword AND stopword | non_stopword | 
| non_stopword AND no_token | non_stopword | 
| stopword AND non_stopword | non_stopword | 
| no_token AND non_stopword | non_stopword | 
| stopword AND stopword | no_token | 
| no_token AND stopword | no_token | 
| stopword AND no_token | no_token | 
| no_token AND no_token | no_token | 
H.5 OR Transformations
| Stopword Expression | Rewritten Expression | 
|---|---|
| non_stopword OR stopword | non_stopword | 
| non_stopword OR no_token | non_stopword | 
| stopword OR non_stopword | non_stopword | 
| no_token OR non_stopword | non_stopword | 
| stopword OR stopword | no_token | 
| no_token OR stopword | no_token | 
| stopword OR no_token | no_token | 
| no_token OR no_token | no_token | 
H.6 ACCUMulate Transformations
| Stopword Expression | Rewritten Expression | 
|---|---|
| non_stopword ACCUM stopword | non_stopword | 
| non_stopword ACCUM no_token | non_stopword | 
| stopword ACCUM non_stopword | non_stopword | 
| no_token ACCUM non_stopword | non_stopword | 
| stopword ACCUM stopword | no_token | 
| no_token ACCUM stopword | no_token | 
| stopword ACCUM no_token | no_token | 
| no_token ACCUM no_token | no_token | 
H.7 MINUS Transformations
| Stopword Expression | Rewritten Expression | 
|---|---|
| non_stopword MINUS stopword | non_stopword | 
| non_stopword MINUS no_token | non_stopword | 
| stopword MINUS non_stopword | no_token | 
| no_token MINUS non_stopword | no_token | 
| stopword MINUS stopword | no_token | 
| no_token MINUS stopword | no_token | 
| stopword MINUS no_token | no_token | 
| no_token MINUS no_token | no_token | 
H.8 MNOT Transformations
| Stopword Expression | Rewritten Expression | 
|---|---|
| non_stopword MNOT stopword | non_stopword | 
| non_stopword MNOT no_token | non_stopword | 
| stopword MNOT non_stopword | no_token | 
| no_token MNOT non_stopword | no_token | 
| stopword MNOT stopword | no_token | 
| no_token MNOT stopword | no_token | 
| stopword MNOT no_token | no_token | 
| no_token MNOT no_token | no_token | 
H.9 NOT Transformations
| Stopword Expression | Rewritten Expression | 
|---|---|
| non_stopword NOT stopword | non_stopword | 
| non_stopword NOT no_token | non_stopword | 
| stopword NOT non_stopword | no_token | 
| no_token NOT non_stopword | no_token | 
| stopword NOT stopword | no_token | 
| no_token NOT stopword | no_token | 
| stopword NOT no_token | no_token | 
| no_token NOT no_token | no_token | 
H.10 EQUIValence Transformations
| Stopword Expression | Rewritten Expression | 
|---|---|
| non_stopword EQUIV stopword | non_stopword | 
| non_stopword EQUIV no_token | non_stopword | 
| stopword EQUIV non_stopword | non_stopword | 
| no_token EQUIV non_stopword | non_stopword | 
| stopword EQUIV stopword | no_token | 
| no_token EQUIV stopword | no_token | 
| stopword EQUIV no_token | no_token | 
| no_token EQUIV no_token | no_token | 
Note:
When you use query explain plan, not all of the equivalence transformations are represented in the EXPLAIN table.
                        
H.11 NEAR Transformations
| Stopword Expression | Rewritten Expression | 
|---|---|
| non_stopword NEAR stopword | non_stopword | 
| non_stopword NEAR no_token | non_stopword | 
| stopword NEAR non_stopword | non_stopword | 
| no_token NEAR non_stopword | non_stopword | 
| stopword NEAR stopword | no_token | 
| no_token NEAR stopword | no_token | 
| stopword NEAR no_token | no_token | 
| no_token NEAR no_token | no_token | 
H.12 Weight Transformations
| Stopword Expression | Rewritten Expression | 
|---|---|
| stopword * n | no_token | 
| no_token * n | no_token | 
H.13 Threshold Transformations
| Stopword Expression | Rewritten Expression | 
|---|---|
| stopword > n | no_token | 
| no_token > n | no_token |