public class ContextQualification extends SearchQualification
Briefly, a Text Query takes the form CONTAINS(index, 'text expression', no.)>1
We expose the Text Query Expression, allowing users to specify any Intermedia
Text Query Expressions. We treat the Text Query Expression as a String and pass it
on to InterMedia. Additionally we allow the Text Query Expression to be late bound.
We also provide a mechanism for returning Text Scores. See Intermedia documentation for details on Scores. In order to get back the Score of a Text Query Expression, the Qualification must be assigned a name. The name must be unique wrt other ContextQualifications in the same SearchTree. The SearchResultObject provides methods to retrieve Text Scores based on the Qualification Name.
Hence a ContextQualification is represented by a Text Query Expression and an optional name.
Below is an example of how to do a simple content search, using a ContextQualification.
// // Usage Examples // // // Simple, document contains the word "FOO" // CONTAINS('FOO') // ContextQualification cq1 = new ContextQualification(); cq.setQuery("FOO"); // Name is needed to identify results in Sort. String contextClauseName = "CQ1"; cq.setName(contextClauseName); // // This part shows sorting based on context score // Notice that the contextClauseName used in CQ, is also // used to sort based on the score of the CQ. // SearchSortSpecification sortSpec; sortSpec.add(Document.CLASS_NAME, ContextQualification.ORDER_PREFIX+"."+ctxClauseName, true); // // Since content is stored in CONTENTOBJECT, remember to // add CONTENTOBJECT to the SearchClassSpecification and then // join DOCUMENT and CONTENTOBJECT classes. // // Following code segment shows mandatory JoinQualification required // for all searches with ContextQualification in them. // This assumes, CONTENTOBJECT hold sthe actual content of the document. // Use the SearchClause.AND operator to attach the following // JoinQualification to the search tree. // // This results in following join condition in the query. // DOCUMENT.ContentObject = ContentObject.ID // JoinQualification jq1 = new JoinQualification(); jq1.setLeftAttribute(Document.CLASS_NAME, Document.CONTENTOBJECT_ATTRIBUTE); // Using null indicates that the join is being done on the ID. jq1.setRightAttribute(ContentObject.CLASS_NAME, null);
Modifier and Type | Field and Description |
---|---|
protected int[] |
m_CurrentClauseNums
Set during SQL geneartion, for each Searched Media.
|
protected String[] |
m_CurrentColumns
Set during SQL generation, for each Searched Media.
|
protected String |
m_Name
Set this attribute, if you want to order results by SCORES or retrieve scores of this query.
|
protected String |
m_Query
The InterMedia Text Query.
|
protected String |
m_TableName
Set during SQL generation, for each Searched Media.
|
static String |
ORDER_PREFIX
Searches can be ordered based on the Text Scores.
|
protected static String |
QUALIFIER_NAME
Name used in Exception strings.
|
LATE_BIND_OPER
Constructor and Description |
---|
ContextQualification()
Constructs a ContextQualification.
|
Modifier and Type | Method and Description |
---|---|
protected void |
accept(oracle.ifs.search.SearchQualificationVisitor v)
Accepts a SearchQualificationVisitor.
|
String |
getName()
Get the Qualification name.
|
String |
getQuery()
Returns the text query expression
|
protected boolean |
isLateBound()
Checks if Qualification is Late Bound.
|
protected void |
setCurrentMedia(String tab,
String[] cols,
int[] nums)
This function is called from the setMediaVisitor.
|
void |
setName(String name)
Set the name of the Qualification.
|
void |
setQuery(String query)
Set the Text Query Expression.
|
clone
protected static String QUALIFIER_NAME
public static String ORDER_PREFIX
protected String m_Query
protected String m_Name
In the SortSpecification specify the SortAttribute as: CONTENTORDER.m_Name. So, if CQ1.m_Name = 'DataBases' , in the SortSpecification 'CONTENTORDER.DataBases' is valid, and the results will be sorted based on the scores of this clause.
The SearchResult will contain the scores for this query. Scores can be retrieved by calling getScore(ContextQueryName).
protected transient String[] m_CurrentColumns
protected transient int[] m_CurrentClauseNums
protected transient String m_TableName
public ContextQualification()
public void setQuery(String query) throws IfsException
query
- text query expression. Is not parsed, is passed onto InterMedia;
hence user can specify any Text Query Expression. See InterMedia
documentation for details.IfsException
public String getQuery()
public void setName(String name) throws IfsException
name
- qualification name, should be unique inside the search tree.IfsException
- if the operation fails.public String getName()
protected boolean isLateBound()
isLateBound
in class SearchQualification
protected void setCurrentMedia(String tab, String[] cols, int[] nums)
tab
- current media's tablecols
- current media's Text columnsnums
- clause numbers to use for current columnsContextSearchSpecification
,
SQLGenerator
protected void accept(oracle.ifs.search.SearchQualificationVisitor v) throws IfsException
accept
in class SearchQualification
v
- SearchQualificationVisitorIfsException
- thrown if Visitor code throws.Copyright © 2023. All rights reserved.