Oracle8i interMedia Text Reference Release 8.1.5 A67843-01 |
|
This chapter describes operator precedence and provides a description, syntax, and examples for each of the Text query operators supported. The following topics are covered:
Operator precedence determines the order in which the components of a query expression are evaluated. Text query operators can be divided into two sets of operators that have their own order of evaluation. These two groups are described below as Group 1 and Group 2.
In all cases, query expressions are evaluated in order from left to right according to the precedence of their operators. Operators with higher precedence are applied first. Operators of equal precedence are applied in order of their appearance in the expression from left to right.
Within query expressions, the Group 1 operators have the following order of evaluation from highest precedence to lowest:
Within query expressions, the Group 2 operators have the following order of evaluation from highest to lowest:
Other operators not listed under Group 1 or Group 2 are procedural. These operators have no sense of precedence attached to them. They include the SQE and thesaurus operators.
In the first example, because AND has a higher precedence than OR, the query returns all documents that contain w1 and all documents that contain both w2 and w3.
In the second example, the query returns all documents that contain both w1 and w2 and all documents that contain w3.
In the third example, the fuzzy operator is first applied to w1, then the AND operator is applied to arguments w3 and w4, then the OR operator is applied to term w2 and the results of the AND operation, and finally, the score from the fuzzy operation on w1 is added to the score from the OR operation.
The fourth example shows that the equivalence operator has higher precedence than the AND operator.
The fifth example shows that the AND operator has lower precedence than the WITHIN operator.
Precedence is altered by grouping characters as follows:
Use the ABOUT operator to perform an ABOUT query. In all languages, an ABOUT query increases the precision of the same query without this operator. Increased precision means more relevant documents are returned.
In English, the ABOUT operator increases the precision of the query by using the theme information in the index.
Note: You need not have a theme component in the index to issue ABOUT queries in English. However, having a theme component in the index yields the best precision for ABOUT queries. |
Oracle retrieves documents that contain themes that match your query word or phrase.
The word or phrase specified in your ABOUT query does not have to exactly match the themes stored in the index. Oracle automatically normalizes the word or phrase before performing lookup in the Text index.
To search for documents that are about soccer, use the following syntax:
'about(soccer)'
You can further refine the query to include documents about soccer rules in international competition by entering the phrase as the query term:
'about(soccer rules in international competition)'
In this English example, Oracle returns all documents that have themes of soccer, rules, or international competition; however, documents which have all three themes will generally score higher than documents that have only one or two of the themes.
You can also query on unstructured phrases, such as the following:
'about(japanese banking investments in indonesia)'
You can use other operators, such as AND or NOT, to combine ABOUT queries with word queries.
For example, you can issue the following combined ABOUT and word query:
'about(dogs) and cat'
You can combine an ABOUT query with another ABOUT query as follows:
'about(dogs) not about(labradors)'
If an index contains only theme information, an ABOUT operator and operand must be included in a query on the text column or Oracle returns an error.
Oracle ignores any query operators that are included in phrase.
ABOUT queries are always case-sensitive. In other words, the string specified for phrase is interpreted with respect to case. Word queries, however, are case-sensitive depending on whether case-sensitivity is enabled for the index.
Use the ACCUM operator to search for documents that contain at least one occurrence of any of the query terms. The documents that contain the most occurrences of the highest number of query terms are assigned the highest score.
Syntax | Description |
---|---|
term1 accum term2 |
Returns documents that contain term1 or term2. Calculates score based on term frequency. |
The following example returns documents that contain either Brazil or soccer and assigns the highest scores to the documents that contain the most occurrences of both terms:
'soccer,Brazil'
ACCUM is similar to OR (|), in that a document satisfies the query expression if any of the terms occur in the document; however, the scoring is different.
OR returns a score based on the query term that occurs most frequently in a document.
ACCUM scores documents based on the number of query terms that occur in the document, with more weight assigned to the documents in which more of the query terms occur. Thus, documents that contain the most occurrences of the highest number of query terms are ranked the highest.
For example, in the example above, a document containing three occurrences of soccer and two occurrences of Brazil scores higher than a document containing six occurrences of soccer only.
Use the AND operator to search for documents that contain at least one occurrence of each of the query terms.
Syntax | Description |
---|---|
term1 and term2 |
Returns documents that contain term1 and term2. Returns the minimum score of its operands. All query terms must occur; lower score taken. |
To obtain all the documents that contain the terms blue and black and red, issue the following query:
'blue & black & red'
In an AND query, the score returned is the score of the lowest query term. In the example above, if the three individual scores for the terms blue, black, and red is 10, 20 and 30 within a document, the document scores 10.
Use the broader term operators (BT, BTG, BTP, BTI) to expand a query to include the term that has been defined in a thesaurus as the broader or higher level term for a specified term. They can also expand the query to include the broader term for the broader term and the broader term for that broader term, and so on up through the thesaurus hierarchy.
Specify the operand for the broader term operator. term is expanded to include the broader term entries defined for the term in the thesaurus specified by thes. The number of broader terms included in the expansion is determined by the value for level.
Specify a qualifier for term, if term is a homograph (word or phrase with multiple meanings, but the same spelling) that appears in two or more nodes in the same hierarchy branch of thes.
If a qualifier is not specified for a homograph in a broader term query, the query expands to include the broader terms of all the homographic terms.
Specify the number of levels traversed in the thesaurus hierarchy to return the broader terms for the specified term. For example, a level of 1 in a BT query returns the broader term entry, if one exists, for the specified term. A level of 2 returns the broader term entry for the specified term, as well as the broader term entry, if one exists, for the broader term.
The level argument is optional and has a default value of one (1). Zero or negative values for the level argument return only the original query term.
Specify the name of the thesaurus used to return the expansions for the specified term. The thes argument is optional and has a default value of DEFAULT. A thesaurus named DEFAULT must exist in the thesaurus tables if you use this default value.
The following query returns all documents that contain the term tutorial or the BT term defined for tutorial in the DEFAULT thesaurus:
'BT(tutorial)
If machine is a broader term for crane (building equipment) and bird is a broader term for crane (waterfowl) and no qualifier is specified for a broader term query, the query
BT(crane)
expands to:
'{crane} or {machine} or {bird}'
If waterfowl is specified as a qualifier for crane in a broader term query, the query
BT(crane{(waterfowl)})
expands to the query:
'{crane} or {bird}'
Each hierarchy in a thesaurus represents a distinct, separate branch, corresponding to the four broader term operators. In a broader term query, Oracle only expands the query using the branch corresponding to the specified broader term operator.
You can browse a thesaurus using procedures in the CTX_THES package.
See Also:
For more information on browsing the broader terms in your thesaurus, see CTX_THES.BT in Chapter 10. |
Use the EQUIV operator to specify an acceptable substitution for a word in a query.
Syntax | Description |
---|---|
term1 equiv term2 |
Specifies that term2 is an acceptable substitution for term1. Score calculated as the sum of all occurrences of both terms. |
The following example returns all documents that contain either the phrase alsatians are big dogs or labradors are big dogs:
'labradors=alsatians are big dogs'
The EQUIV operator has higher precedence than all other operators except the expansion operators (fuzzy, soundex, stem).
Use the fuzzy (?) operator to expand queries to include words that are spelled similarly to the specified term. This type of expansion is helpful for finding more accurate results when there are frequent misspellings in the documents in the database.
Unlike stem expansion, the number of words generated by a fuzzy expansion depends on what is in the index; results can vary significantly according to the contents of the index.
Syntax | Description |
---|---|
?term |
Expands a query to include all terms with similar spellings as the specified term. |
Input | Expands To |
---|---|
?cat |
cat cats calc case |
?feline |
feline defined filtering |
?apply |
apply apple applied April |
?read |
lead real |
Fuzzy works best for languages that use a 7-bit character set, such as English. It can be used, with lesser effectiveness, for languages that use an 8-bit character set, such as many Western European languages. Also, the Japanese lexer provides limited fuzzy matching.
In addition, if fuzzy returns a stopword, the stopword is not included in the query or highlighted by CTX_DOC.HIGHLIGHT or CTX_DOC.MARKUP.
If base-letter conversion is enabled for a text column and the query expression contains a fuzzy operator, Oracle operates on the base-letter form of the query.
Use the MINUS operator to search for documents that contain one query term and you want the presence of a second query term to cause the document to be ranked lower. The MINUS operator is useful for lowering the score of documents that contain "noise".
Syntax | Description |
---|---|
term1 minus term2 |
Returns documents that contain term1. Calculates score by subtracting occurrences of term2 from occurrences of term1. |
Suppose a query on the term cars always returned high scoring documents about Ford cars. You can lower the scoring of the Ford documents by using the expression:
'cars - Ford'
In essence, this expression returns documents that contain the term cars and possibly Ford; however, the score for a returned document is the number of occurrences of cars minus the number of occurrences of Ford. If a document does not contain any occurrences of the term Ford, no value is subtracted from the score.
Use the narrower term operators (NT, NTG, NTP, NTI) to expand a query to include all the terms that have been defined in a thesaurus as the narrower or lower level terms for a specified term. They can also expand the query to include all of the narrower terms for each narrower term, and so on down through the thesaurus hierarchy.
Specify the operand for the narrower term operator. term is expanded to include the narrower term entries defined for the term in the thesaurus specified by thes. The number of narrower terms included in the expansion is determined by the value for level.
Specify a qualifier for term, if term is a homograph (word or phrase with multiple meanings, but the same spelling) that appears in two or more nodes in the same hierarchy branch of thes.
If a qualifier is not specified for a homograph in a narrower term query, the query expands to include all of the narrower terms of all homographic terms.
Specify the number of levels traversed in the thesaurus hierarchy to return the narrower terms for the specified term. For example, a level of 1 in an NT query returns all the narrower term entries, if any exist, for the specified term. A level of 2 returns all the narrower term entries for the specified term, as well as all the narrower term entries, if any exist, for each narrower term.
The level argument is optional and has a default value of one (1). Zero or negative values for the level argument return only the original query term.
Specify the name of the thesaurus used to return the expansions for the specified term. The thes argument is optional and has a default value of DEFAULT. A thesaurus named DEFAULT must exist in the thesaurus tables if you use this default value.
The following query returns all documents that contain either the term tutorial or any of the NT terms defined for tutorial in the DEFAULT thesaurus:
'NT(tutorial)'
The following query returns all documents that contain either fairy tale or any of the narrower instance terms for fairy tale as defined in the DEFAULT thesaurus:
'NTI(fairy tale)'
That is, if the terms cinderella and snow white are defined as narrower term instances for fairy tale, Oracle returns documents that contain fairy tale, cinderella, or snow white.
Each hierarchy in a thesaurus represents a distinct, separate branch, corresponding to the four narrower term operators. In a narrower term query, Oracle only expands the query using the branch corresponding to the specified narrower term operator.
You can browse a thesaurus using procedures in the CTX_THES package.
See Also:
For more information on browsing the narrower terms in your thesaurus, see CTX_THES.NT in Chapter 10. |
Use the NEAR operator to return a score based on the proximity of two or more query terms. Oracle returns higher scores for terms closer together and lower scores for terms farther apart in a document.
Syntax |
---|
NEAR((word1, word2,..., wordn) [, max_span [, order]]) |
Specify the terms in the query separated by commas. The query terms can be single words or phrases.
Optionally specify the size of the biggest clump. The default is 100. Oracle returns an error if you specify a number greater than 100.
A clump is the smallest group of words in which all query terms occur. All clumps begin and end with a query term.
For near queries with two terms, max_span is the maximum distance allowed between the two terms. For example, to query on dog and cat where dog is within 6 words of cat, issue the following query:
'near((dog, cat), 6)'
Specify TRUE for Oracle to search for terms in the order you specify. The default is FALSE.
For example, to search for the words monday, tuesday, and wednesday in that order with a maximum clump size of 20, issue the following query:
'near((monday, tuesday, wednesday), 20, TRUE)
Oracle might return different scores for the same document when you use identical query expressions that have the ORDER flag set differently. For example, Oracle might return different scores for the same document when you issue the following queries:
'near((dog, cat), 50, FALSE)' 'near((dog, cat), 50, TRUE)'
The scoring for the NEAR operator combines frequency of the terms with proximity of terms. For each document that satisfies the query, Oracle returns a score between 1 and 100 that is proportional to the number of clumps in the document and inversely proportional to the average size of the clumps. This means many small clumps in a document result in higher scores, since small clumps imply closeness of terms.
The number of terms in a query also affects score. Queries with many terms, such as seven, generally need fewer clumps in a document to score 100 than do queries with few terms, such as two.
A clump is the smallest group of words in which all query terms occur. All clumps begin and end with a query term. You can define clump size with the max_span parameter as described in this section.
You can use the NEAR operator with other operators such as AND and OR. Scores are calculated in the regular way.
For example, to find all documents that contain the terms tiger, lion, and cheetah where the terms lion and tiger are within 10 words of each other, issue the following query:
'near((lion, tiger), 10) AND cheetah'
The score returned for each document is the lower score of the near operator and the term cheetah.
You can also use the equivalence operator to substitute a single term in a near query:
'near((stock crash, Japan=Korea), 20)'
This query asks for all documents that contain the phrase stock crash within twenty words of Japan or Korea.
You can write near queries using the syntax of previous ConText releases. For example, to find all documents where lion occurs near tiger, you can write:
'lion near tiger'
or with the semi-colon as follows:
'lion;tiger'
This query is equivalent to the following query:
'near((lion, tiger), 100, FALSE)'
When you use highlighting and your query contains the near operator, all occurrences of all terms in the query that satisfy the proximity requirements are highlighted. Highlighted terms can be single words or phrases.
For example, assume a document contains the following text:
Chocolate and vanilla are my favorite ice cream flavors. I like chocolate served in a waffle cone, and vanilla served in a cup with carmel syrup.
If the query is near((chocolate, vanilla)), 100, FALSE), the following is highlighted:
<<Chocolate>> and <<vanilla>> are my favorite ice cream flavors. I like <<chocolate>> served in a waffle cone, and <<vanilla>> served served in a cup with carmel syrup.
However, if the query is near((chocolate, vanilla)), 4, FALSE), only the following is highlighted:
<<Chocolate>> and <<vanilla>> are my favorite ice cream flavors. I like chocolate served in a waffle cone, and vanilla served in a cup with carmel syrup.
See Also:
For more information about the procedures you can use for highlighting, see Chapter 8, "CTX_DOC Package". |
You can use the NEAR operator with the WITHIN operator for section searching as follows:
'near((dog, cat), 10) WITHIN Headings'
When evaluating expressions such as these, Oracle looks for clumps that lie entirely within the given section.
In the example above, only those clumps that contain dog and cat that lie entirely within the section Headings are counted. That is, if the term dog lies within Headings and the term cat lies five words from dog, but outside of Headings, this pair of words does not satisfy the expression and is not counted.
Use the NOT operator to search for documents that contain one query term and not another.
Syntax | Description |
---|---|
term1 not term2 |
Returns documents that contain term1 and not term2. |
To obtain the documents that contain the term animals but not dogs, use the following expression:
'animals ~ dogs'
Similarly, to obtain the documents that contain the term transportation but not automobiles or trains, use the following expression:
'transportation not (automobiles or trains)'
Use the OR operator to search for documents that contain at least one occurrence of any of the query terms.
Syntax | Description |
---|---|
term1 or term2 |
Returns documents that contain term1 or term2. Returns the maximum score of its operands. At least one term must exist; higher score taken. |
For example, to obtain the documents that contain the term cats or the term dogs, use either of the following expressions:
'cats | dogs' 'cats OR dogs'
In an OR query, the score returned is the score for the highest query term. In the example above, if the scores for cats and dogs is 30 and 40 within a document, the document scores 40.
Use the preferred term operator (PT) to replace a term in a query with the preferred term that has been defined in a thesaurus for the term.
Syntax | Description |
---|---|
PT(term[,thes]) |
Replaces the specified word in a query with the preferred term for term. |
Specify the operand for the preferred term operator. term is replaced by the preferred term defined for the term in the specified thesaurus. However, if no PT entries are defined for the term, term is not replaced in the query expression and term is the result of the expansion.
Specify the name of the thesaurus used to return the expansions for the specified term. The thes argument is optional and has a default value of DEFAULT. As a result, a thesaurus named DEFAULT must exist in the thesaurus tables before using any of the thesaurus operators.
The term automobile has a preferred term of car in a thesaurus. A PT query for automobile returns all documents that contain the word car. Documents that contain the word automobile are not returned.
You can browse a thesaurus using procedures in the CTX_THES package.
See Also:
For more information on browsing the preferred terms in your thesaurus, see CTX_THES.PT in Chapter 10. |
Use the related term operator (RT) to expand a query to include all related terms that have been defined in a thesaurus for the term.
Syntax | Description |
---|---|
RT(term[,thes]) |
Expands a query to include all the terms defined in the thesaurus as a related term for term. |
Specify the operand for the related term operator. term is expanded to include term and all the related entries defined for term in thes.
Specify the name of the thesaurus used to return the expansions for the specified term. The thes argument is optional and has a default value of DEFAULT. As a result, a thesaurus named DEFAULT must exist in the thesaurus tables before using any of the thesaurus operators.
The term dog has a related term of wolf. A RT query for dog returns all documents that contain the word dog and wolf.
You can browse a thesaurus using procedures in the CTX_THES package.
See Also:
For more information on browsing the related terms in your thesaurus, see CTX_THES.RT in Chapter 10. |
Use the soundex (!) operator to expand queries to include words that have similar sounds; that is, words that sound like other words. This function allows comparison of words that are spelled differently, but sound alike in English.
Syntax | Description |
---|---|
!term |
Expands a query to include all terms that sound the same as the specified term (English-language text only). |
SELECT ID, COMMENT FROM EMP_RESUME WHERE CONTAINS (COMMENT, '!SMYTHE') > 0 ; ID COMMENT -- ------------ 23 Smith is a hard worker who..
Soundex works best for languages that use a 7-bit character set, such as English. It can be used, with lesser effectiveness, for languages that use an 8-bit character set, such as many Western European languages.
If you have base-letter conversion specified for a text column and the query expression contains a soundex operator, Oracle operates on the base-letter form of the query.
Use the stem ($) operator to search for terms that have the same linguistic root as the query term.
The Text stemmer, licensed from Xerox Corporation's XSoft Division, supports the following languages: English, French, Spanish, Italian, German, and Dutch.
Syntax | Description |
---|---|
$term |
Expands a query to include all terms having the same stem or root word as the specified term. |
Input | Expands To |
---|---|
$scream |
scream screaming screamed |
$distinguish |
distinguish distinguished distinguishes |
$guitars |
guitars guitar |
$commit |
commit committed |
$cat |
cat cats |
$sing |
sang sung sing |
If stem returns a word designated as a stopword, the stopword is not included in the query or highlighted by CTX_QUERY.HIGHLIGHT or CTX_QUERY.MARKUP.
Use the SQE operator to call a stored query expression created with the CTX_QUERY.STORE_SQE procedure.
Stored query expressions can be used for creating predefined bins for organizing and categorizing documents or to perform iterative queries, in which an initial query is refined using one or more additional queries.
Syntax | Description |
---|---|
SQE(SQE_name) |
Returns the results for the stored query expression SQE_name. |
To create an SQE named disasters, use CTX_QUERY.STORE_SQE as follows:
begin ctx_query.store_sqe('disasters', 'hurricane or earthquake or blizzard'); end;
This stored query expression returns all documents that contain either hurricane, earthquake or blizzard.
This SQE can then be called within a query expression as follows:
select score(1), docid from emp where contains(resume, 'sqe(disasters)', 1)> 0 order by score(1);
Use the synonym operator (SYN) to expand a query to include all the terms that have been defined in a thesaurus as synonyms for the specified term.
Syntax | Description |
---|---|
SYN(term[,thes]) |
Expands a query to include all the terms defined in the thesaurus as synonyms for term. |
Specify the operand for the synonym operator. term is expanded to include term and all the synonyms defined for term in thes.
Specify the name of the thesaurus used to return the expansions for the specified term. The thes argument is optional and has a default value of DEFAULT. A thesaurus named DEFAULT must exist in the thesaurus tables if you use this default value.
The following query expression returns all documents that contain the term dog or any of the synonyms defined for dog in the DEFAULT thesaurus:
'SYN(dog)'
Expansion of compound phrases for a term in a synonym query are returned as AND conjunctives.
For example, the compound phrase temperature + measurement + instruments is defined in a thesaurus as a synonym for the term thermometer. In a synonym query for thermometer, the query is expanded to:
{thermometer} OR ({temperature}&{measurement}&{instruments})
You can browse your thesaurus using procedures in the CTX_THES package.
See Also:
For more information on browsing the synonym terms in your thesaurus, see CTX_THES.SYN in Chapter 10. |
Use the threshold operator (>) in two ways:
The threshold operator at the expression level eliminates documents in the result set that score below a threshold number.
The threshold operator at the query term level selects a document based on how a term scores in the document.
At the expression level, to search for documents that contain relational databases and to return only documents that score greater than 75, use the following expression:
'relational databases > 75'
At the query term level, to select documents that have at least a score of 30 for lion and contain tiger, use the following expression:
'(lion > 30) and tiger'
Use the translation term operator (TR) to expand a query to include all defined foreign language equivalent terms.
Syntax | Description |
---|---|
TR(term[, lang, [thes]]) |
Expands term to include all the foreign equivalents that are defined for term. |
Specify the operand for the translation term operator. term is expanded to include all the foreign language entries defined for term in thes.
Optionally, specify which foreign language equivalents to return in the expansion. The language you specify must match the language as defined in thes. If you omit this parameter, the system expands to use all defined foreign language terms.
Optionally, specify the name of the thesaurus used to return the expansions for the specified term. The thes argument has a default value of DEFAULT. As a result, a thesaurus named DEFAULT must exist in the thesaurus tables before you can use any of the thesaurus operators.
Consider a thesaurus MY_THES with the following entries for cat:
cat SPANISH: gato FRENCH: chat
To search for all documents that contain cat and the spanish translation of cat, issue the following query:
'tr(cat, spanish, my_thes)'
This query expands to:
'{cat}|{gato}|{chat}'
You can browse a thesaurus using procedures in the CTX_THES package.
See Also:
For more information on browsing the related terms in your thesaurus, see CTX_THES.TR in Chapter 10. |
Use the translation term operator (TR) to expand a query to include all the defined foreign equivalents of the query term, the synonyms of query term, and the foreign equivalents of the synonyms.
Syntax | Description |
---|---|
TR(term[, lang, [thes]]) |
Expands term to include foreign equivalents of term, the synonyms of term, and the foreign equivalents of the synonyms. |
Specify the operand for this operator. term is expanded to include all the foreign language entries and synonyms defined for term in thes.
Optionally, specify which foreign language equivalents to return in the expansion. The language you specify must match the language as defined in thes. If you omit this parameter, the system expands to use all defined foreign language terms.
Optionally, specify the name of the thesaurus used to return the expansions for the specified term. The thes argument has a default value of DEFAULT. As a result, a thesaurus named DEFAULT must exist in the thesaurus tables before you can use any of the thesaurus operators.
Consider a thesaurus MY_THES with the following entries for cat:
cat SPANISH: gato FRENCH: chat SYN lion SPANISH: leon
To search for all documents that contain cat, the spanish equivalent of cat, the synonym of cat, and the spanish equivalent of lion, issue the following query:
'trsyn(cat, spanish, my_thes)'
This query expands to:
'{cat}|{gato}|{lion}|{leon}'
You can browse a thesaurus using procedures in the CTX_THES package.
See Also:
For more information on browsing the translation and synonym terms in your thesaurus, see CTX_THES.TRSYN in Chapter 10. |
Use the top term operator (TT) to replace a term in a query with the top term that has been defined for the term in the standard hierarchy (BT, NT) in a thesaurus. Top terms in the generic (BTG, NTG), partitive (BTP, NTP), and instance (BTI, NTI) hierarchies are not returned.
Syntax | Description |
---|---|
TT(term[,thes]) |
Replaces the specified word in a query with the top term in the standard hierarchy (BT, NT) for term. |
Specify the operand for the top term operator. term is replaced by the top term defined for the term in the specified thesaurus. However, if no TT entries are defined for term, term is not replaced in the query expression and term is the result of the expansion.
Specify the name of the thesaurus used to return the expansions for the specified term. The thes argument is optional and has a default value of DEFAULT. A thesaurus named DEFAULT must exist in the thesaurus tables if you use this default value.
The term dog has a top term of animal in the standard hierarchy of a thesaurus. A TT query for dog returns all documents that contain the phrase animal. Documents that contain the word dog are not returned.
You can browse your thesaurus using procedures in the CTX_THES package.
See Also:
For more information on browsing the top terms in your thesaurus, see CTX_THES.TT in Chapter 10. |
The weight operator multiplies the score by the given factor, topping out at 100 when the score exceeds 100. For example, the query cat, dog*2' sums the score of cat with twice the score of dog, topping out at 100 when the score is greater than 100.
In expressions that contain more than one query term, use the weight operator to adjust the relative scoring of the query terms. You can reduce the score of a query term by using the weight operator with a number less than 1; you can increase the score of a query term by using the weight operator with a number greater than 1 and less than 10.
The weight operator is useful in accumulate, OR, or AND queries when the expression has more than one query term. With no weighting on individual terms, the score cannot tell you which of the query terms occurs the most. With term weighting, you can alter the scores of individual terms and hence make the overall document ranking reflect the terms you are interested in.
Syntax | Description |
---|---|
term*n |
Returns documents that contain term. Calculates score by multiplying the raw score of term by n, where n is a number from 0.1 to 10. |
You have a collection of sports articles. You are interested in the articles about soccer, in particular Brazilian soccer. It turns out that a regular query on soccer or Brazil returns many high ranking articles on US soccer. To raise the ranking of the articles on Brazilian soccer, you can issue the following query:
'soccer or Brazil*3'
Table 4-1 illustrates how the weight operator can change the ranking of three hypothetical documents A, B, and C, which all contain information about soccer. The columns in the table show the total score of four different query expressions on the three documents.
soccer | Brazil | soccer or Brazil | soccer or Brazil*3 | |
---|---|---|---|---|
A |
20 |
10 |
20 |
30 |
B |
10 |
30 |
30 |
90 |
C |
50 |
20 |
50 |
60 |
The score in the third column containing the query soccer or Brazil is the score of the highest scoring term. The score in the fourth column containing the query soccer or Brazil*3 is the larger of the score of the first column soccer and of the score Brazil multiplied by three, Brazil*3.
With the initial query of soccer or Brazil, the documents are ranked in the order C B A. With the query of soccer or Brazil*3, the documents are ranked B C A, which is the preferred ranking.
You can use the WITHIN operator to narrow a query down into document sections. Document sections can be one of the following:
To find all the documents that contain the term San Francisco within the user-defined section Headings, write your query as follows:
'San Francisco WITHIN Headings'
To find all the documents that contain the term sailing and contain the term San Francisco within the user-defined section Headings, write your query in one of two ways:
'(San Francisco WITHIN Headings) and sailing' 'sailing and San Francisco WITHIN Headings'
To find all documents that contain the terms dog and cat within the same user-defined section Headings, write your query as follows:
'(dog and cat) WITHIN Headings'
The above query is logically different from:
'dog WITHIN Headings and cat WITHIN Headings'
This query finds all documents that contain dog and cat where the terms dog and cat are in Headings sections, regardless of whether they occur in the same Headings section or different sections.
To find all documents in which dog is near cat within the section Headings, write your query as follows:
'dog near cat WITHIN Headings'
The syntax for querying within a field section is the same as querying within a zone section. That is, all the examples given in the previous section, "Querying Within Zone Sections", apply to field sections.
However, if the field section is created with the visible flag set to FALSE in CTX_DDL.ADD_FIELD_SECTION, the text within a field section can only be queried using the WITHIN operator.
For example, assume that TITLE is a field section defined with visible flag set to FALSE. Then the simple query dog without the WITHIN operator will not find a document containing:
<TITLE>the dog</TITLE>. I like my pet.
To find such a document, you can use the WITHIN operator as follows:
'dog WITHIN TITLE'
Alternatively, you can set the visible flag to TRUE when you define TITLE as a field section with CTX_DDL.ADD_FIELD_SECTION.
See Also:
For more information about creating field sections, see ADD_FIELD_SECTION in Chapter 7, "CTX_DDL Package". |
Querying within sentence or paragraph boundaries is useful to find combinations of words that occur in the same sentence or paragraph.
To find documents that contain dog and cat within the same sentence:
'(dog and cat) WITHIN SENTENCE'
To find documents that contain dog and cat within the same paragraph:
'(dog and cat) WITHIN PARAGRAPH'
To find documents that contain sentences with the word dog but not cat:
'(dog not cat) WITHIN SENTENCE'
The WITHIN operator has no effect on score.
The WITHIN operator requires you to know the name of the section you wish to search. A list of defined sections can be obtained using the CTX_SECTIONS or CTX_USER_SECTIONS views.
For special and zone sections, the terms of the query must be fully enclosed in a particular occurrence of the section for the document to satisfy the query. This is not a requirement for field sections.
For example, consider the query where bold is a zone section:
'(dog and cat) WITHIN bold'
This query finds:
<B>dog cat</B>
but it does not find:
<B>dog</B><B>cat</B>
This is because dog and cat must be in the same bold section.
This behavior is especially useful for special sections, where
'(dog and cat) WITHIN sentence'
means find dog and cat within the same sentence.
Field sections on the other hand are meant for non-repeating, embedded meta-data such as a title section. Queries within field sections cannot distinguish between occurrences. All occurrences of a field section are considered to be parts of a whole section. For example, the query:
(dog and cat) WITHIN title
can find a document like this:
<TITLE>dog</TITLE<TITLE>cat</TITLE>
In return for this field section limitation and for the overlap and nesting limitations, field section queries are generally faster than zone section queries, especially if the section occurs in every document, or if the search term is common.
The WITHIN operator has the following limitations: