Qry
index
/bos/usr0/callan/Classes/11-642/2023-F/Qry.py

The Qry class is the root class in the query operator hierarchy.
Most of this class is abstract, because different types of
query operators (Sop, Iop) have different subclasses, and each
query operator has its own subclass.  This class defines the
common interface to query operators, and is a place to store data
structures and methods that are common to all query operators.
 
Document-at-a-time (DAAT) processing is implemented as iteration
over (virtual or materialized) lists of document ids or document
locations.  To evaluate query q using the UnrankedBoolean retrieval
model:
 
  RetrievalModel r = new RetrievalModelUnrankedBoolean ();
  q.initialize (r);
 
  while (q.docIteratorHasMatch (r)) {
    int docid = q.docIteratorGetMatch ();
    double score = ((QrySop) q).getScore (model);
    System.out.println ("internal docid: " + docid + ", score: " score);
    q.docIteratorAdvancePast (docid);
  }
 
The Qry class defines the iteration interface and provides general
methods that each subclass may override or use.  Note that the 
iteration interface does not conform to the standard Python
iteration interface.  It has different characteristics and capabilities.
For example, getting the current element does not consume the
element; the iterator must be advanced explicitly, and it can be
advanced in different ways, which provides opportunities to evaluate
the query more efficiently.
 
The Qry class has two subclasses.  QrySop ("score operators") contains
query operators that compute document scores (e.g., AND, OR, SCORE).
QryIop ("inverted list operators") contains query operators that
produce inverted lists (e.g., SYN, NEAR, TERM).  
 
The docIterator for query operators in the QrySop hierarchy iterates
over a virtual list.  The next document id is determined dynamically
when hasMatch is called.  Thus, the iterator needs to be part of
the query operator, because different query operators may have
different strategies for determining what matches and how scores
are calculated.  When hasMatch identifies a match, the match is
cached so that it can be accessed efficiently by getMatch and
getScore methods.
 
The inverted lists of query operators in the QryIop hierarchy are
materialized when the query operator is initialized.  It is not
possible to produce them in a document-at-a-time mode because
the df and ctf statistics are not known until the inverted list
is fully constructed.  QryIop operators provide a document-at-a-time
interface to the inverted lists via docIterators.
 
The data structure that stores query arguments (args) is accessible
by subclasses.  If it is accessed via a standard Java iterator, the
search engine creates and then discards many (many) iterators during
query evaluation, which reduces computational efficiency.

 
Modules
       
sys

 
Classes
       
builtins.object
Qry

 
class Qry(builtins.object)
     Methods defined here:
__init__(self)
Initialize self.  See help(type(self)) for accurate signature.
__str__(self)
Get a string version of this query operator.  This is a generic
method that works for most query operators.  However, some query
operators (e.g., #NEAR/n or #WEIGHT) may need to override this
method with something more specific.
 
Returns the string version of this query operator.
appendArg(self, q)
Append an argument to the list of query operator arguments.  
 
q: The query argument (query operator) to append.
 
throws: IllegalArgumentException q is an invalid argument
delArg(self, i)
Delete the i'th argument from the list of query operator arguments.
docIteratorAdvancePast(self, docid)
Advance the internal document iterator beyond the specified
document.
 
docid: An internal document id.
docIteratorAdvanceTo(self, docid)
Advance the internal document iterator to the specified
document, or beyond if it doesn't.
 
docid: An internal document id.
docIteratorClearMatchCache(self)
Clear the docIterator's matching docid cache.  The cache should
be cleared whenever a docIterator is advanced.
docIteratorGetMatch(self)
Return the id of the document that the iterator points to now.
Use docIteratorHasMatch to determine whether the iterator
currently points to a document.  If the iterator doesn't point
to a document, an invalid document id is returned.
 
Returns the internal id of the current document.
docIteratorHasMatch(self, r)
Indicate whether the query has a match.        
r: The retrieval model that determines what is a match
 
Returns True if the query matches, otherwise False.
docIteratorHasMatchAll(self, r)
An instantiation of docIteratorHasMatch that is true if the
query has a document that matches all query arguments; some
subclasses may choose to use this implementation.  
 
r: The retrieval model that determines what is a match.
 
Returns True if the query matches, otherwise False.
docIteratorHasMatchCache(self)
Returns True if a match is cached, otherwise False.
docIteratorHasMatchFirst(self, r)
An instantiation of docIteratorHasMatch that is true if the
query has a document that matches the first query argument;
some subclasses may choose to use this implementation.
 
r: The retrieval model that determines what is a match.
Returns True if the query matches, otherwise False.
docIteratorHasMatchMin(self, r)
An instantiation of docIteratorHasMatch that is true if the
query has a document that matches at least one query argument;
the match is the smallest docid to match; some subclasses may
choose to use this implementation.
 
r: The retrieval model that determines what is a match
Returns True if the query matches, otherwise False.
docIteratorSetMatchCache(self, docid)
Set the matching docid cache.
 
docid: The internal document id to store in the cache.
getDisplayName(self)
Every operator has a display name that can be used by
toString for debugging or other user feedback.  
 
Returns the query operator's display name.
initialize(self, RetrievalModel)
Initialize the query operator (and its arguments), including any
internal iterators; this method must be called before iteration
can begin.
 
r: A retrieval model that guides initialization
throws IOException: Error accessing the Lucene index.
setDisplayName(self, name)
Every operator must have a display name that can be used by
toString for debugging or other user feedback.  
 
name: The query operator's display name

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Data and other attributes defined here:
INVALID_DOCID = -1