Xapian::Query Class Reference

Class representing a query. More...

#include <query.h>

Collaboration diagram for Xapian::Query:

Collaboration graph
[legend]
List of all members.

Public Types

enum  op {
  OP_AND, OP_OR, OP_AND_NOT, OP_XOR,
  OP_AND_MAYBE, OP_FILTER, OP_NEAR, OP_PHRASE,
  OP_VALUE_RANGE, OP_SCALE_WEIGHT, OP_ELITE_SET, OP_VALUE_GE,
  OP_VALUE_LE
}
 Enum of possible query operations. More...

Public Member Functions

 Query (const Query &copyme)
 Copy constructor.
Queryoperator= (const Query &copyme)
 Assignment.
 Query ()
 Default constructor: makes an empty query which matches no documents.
 ~Query ()
 Destructor.
 Query (const std::string &tname_, Xapian::termcount wqf_=1, Xapian::termpos pos_=0)
 A query consisting of a single term.
 Query (Query::op op_, const Query &left, const Query &right)
 A query consisting of two subqueries, opp-ed together.
 Query (Query::op op_, const std::string &left, const std::string &right)
 A query consisting of two termnames opp-ed together.
template<class Iterator>
 Query (Query::op op_, Iterator qbegin, Iterator qend, Xapian::termcount parameter=0)
 Combine a number of Xapian::Query-s with the specified operator.
 Query (Query::op op_, Xapian::Query q)
 Apply the specified operator to a single Xapian::Query object.
 Query (Query::op op_, Xapian::Query q, double parameter)
 Apply the specified operator to a single Xapian::Query object, with a double parameter.
 Query (Query::op op_, Xapian::valueno valno, const std::string &begin, const std::string &end)
 Construct a value range query on a document value.
 Query (Query::op op_, Xapian::valueno valno, const std::string &value)
 Construct a value comparison query on a document value.
Xapian::termcount get_length () const
 Get the length of the query, used by some ranking formulae.
TermIterator get_terms_begin () const
 Return a Xapian::TermIterator returning all the terms in the query, in order of termpos.
TermIterator get_terms_end () const
 Return a Xapian::TermIterator to the end of the list of terms in the query.
bool empty () const
 Test if the query is empty (i.e.
std::string get_description () const
 Return a string describing this object.

Static Public Attributes

static Xapian::Query MatchAll = Xapian::Query(string())
 A query which matches all documents in the database.
static Xapian::Query MatchNothing = Xapian::Query()
 A query which matches no documents.

Private Member Functions

void add_subquery (const Query &subq)
 Add a subquery by reference.
void add_subquery (const Query *subq)
 Add a subquery by pointer.
void add_subquery (const std::string &tname)
void start_construction (Query::op op_, Xapian::termcount parameter)
 Setup the internals for the query, with the appropriate operator.
void end_construction ()
 Check that query has an appropriate number of arguments, etc,.
void abort_construction ()
 Abort construction of the query: delete internal.

Private Attributes

Xapian::Internal::RefCntPtr<
Internal
internal
 

For internal use only.

Reference counted internals.



Classes

class  Internal
 

For internal use only.

Internal class, implementing most of Xapian::Query.

More...

Detailed Description

Class representing a query.

Queries are represented as a tree of objects.

Definition at line 51 of file query.h.


Member Enumeration Documentation

enum Xapian::Query::op

Enum of possible query operations.

Enumerator:
OP_AND  Return iff both subqueries are satisfied.
OP_OR  Return if either subquery is satisfied.
OP_AND_NOT  Return if left but not right satisfied.
OP_XOR  Return if one query satisfied, but not both.
OP_AND_MAYBE  Return iff left satisfied, but use weights from both.
OP_FILTER  As AND, but use only weights from left subquery.
OP_NEAR  Find occurrences of a list of terms with all the terms occurring within a specified window of positions.

Each occurrence of a term must be at a different position, but the order they appear in is irrelevant.

The window parameter should be specified for this operation, but will default to the number of terms in the list.

OP_PHRASE  Find occurrences of a list of terms with all the terms occurring within a specified window of positions, and all the terms appearing in the order specified.

Each occurrence of a term must be at a different position.

The window parameter should be specified for this operation, but will default to the number of terms in the list.

OP_VALUE_RANGE  Filter by a range test on a document value.

OP_SCALE_WEIGHT  Scale the weight of a subquery by the specified factor.

A factor of 0 means this subquery will contribute no weight to the query - it will act as a purely boolean subquery.

If the factor is negative, Xapian::InvalidArgumentError will be thrown.

OP_ELITE_SET  Select an elite set from the subqueries, and perform a query with these combined as an OR query.
OP_VALUE_GE  Filter by a greater-than-or-equal test on a document value.

OP_VALUE_LE  Filter by a less-than-or-equal test on a document value.

Definition at line 59 of file query.h.


Constructor & Destructor Documentation

Xapian::Query::Query ( const Query copyme  ) 

Copy constructor.

Definition at line 175 of file omquery.cc.

References DEBUGAPICALL.

Xapian::Query::Query (  ) 

Default constructor: makes an empty query which matches no documents.

Also useful for defining a Query object to be assigned to later.

An exception will be thrown if an attempt is made to use an undefined query when building up a composite query.

Definition at line 191 of file omquery.cc.

References DEBUGAPICALL.

Xapian::Query::~Query (  ) 

Destructor.

Definition at line 197 of file omquery.cc.

References DEBUGAPICALL.

Xapian::Query::Query ( const std::string &  tname_,
Xapian::termcount  wqf_ = 1,
Xapian::termpos  pos_ = 0 
)

A query consisting of a single term.

Xapian::Query::Query ( Query::op  op_,
const Query left,
const Query right 
)

A query consisting of two subqueries, opp-ed together.

Definition at line 106 of file omquery.cc.

References abort_construction(), add_subquery(), DEBUGAPICALL, and end_construction().

Xapian::Query::Query ( Query::op  op_,
const std::string &  left,
const std::string &  right 
)

A query consisting of two termnames opp-ed together.

Definition at line 231 of file omquery.cc.

References abort_construction(), add_subquery(), end_construction(), and start_construction().

template<class Iterator>
Xapian::Query::Query ( Query::op  op_,
Iterator  qbegin,
Iterator  qend,
Xapian::termcount  parameter = 0 
) [inline]

Combine a number of Xapian::Query-s with the specified operator.

The Xapian::Query objects are specified with begin and end iterators.

AND, OR, NEAR and PHRASE can take any number of subqueries. Other operators take exactly two subqueries.

The iterators may be to Xapian::Query objects, pointers to Xapian::Query objects, or termnames (std::string-s).

For NEAR and PHRASE, a window size can be specified in parameter.

For ELITE_SET, the elite set size can be specified in parameter.

Definition at line 258 of file query.h.

References abort_construction(), add_subquery(), end_construction(), and start_construction().

Xapian::Query::Query ( Query::op  op_,
Xapian::Query  q 
)

Apply the specified operator to a single Xapian::Query object.

Deprecated:
This method is deprecated because it isn't useful, since none of the current query operators can be usefully applied to a single subquery with a parameter value.

Definition at line 121 of file omquery.cc.

References abort_construction(), add_subquery(), end_construction(), and start_construction().

Xapian::Query::Query ( Query::op  op_,
Xapian::Query  q,
double  parameter 
)

Apply the specified operator to a single Xapian::Query object, with a double parameter.

Definition at line 133 of file omquery.cc.

References abort_construction(), add_subquery(), DEBUGAPICALL, end_construction(), Xapian::Internal::RefCntPtr< T >::get(), internal, OP_SCALE_WEIGHT, OP_VALUE_GE, OP_VALUE_LE, OP_VALUE_RANGE, and start_construction().

Xapian::Query::Query ( Query::op  op_,
Xapian::valueno  valno,
const std::string &  begin,
const std::string &  end 
)

Construct a value range query on a document value.

A value range query matches those documents which have a value stored in the slot given by valno which is in the range specified by begin and end (in lexicographical order), including the endpoints.

Parameters:
op_ The operator to use for the query. Currently, must be OP_VALUE_RANGE.
valno The slot number to get the value from.
begin The start of the range.
end The end of the range.

Xapian::Query::Query ( Query::op  op_,
Xapian::valueno  valno,
const std::string &  value 
)

Construct a value comparison query on a document value.

This query matches those documents which have a value stored in the slot given by valno which compares, as specified by the operator, to value.

Parameters:
op_ The operator to use for the query. Currently, must be OP_VALUE_GE or OP_VALUE_LE.
valno The slot number to get the value from.
value The value to compare.

Definition at line 167 of file omquery.cc.

References DEBUGAPICALL.


Member Function Documentation

Query & Xapian::Query::operator= ( const Query copyme  ) 

Assignment.

Definition at line 183 of file omquery.cc.

References DEBUGAPICALL, internal, and RETURN.

termcount Xapian::Query::get_length (  )  const

Get the length of the query, used by some ranking formulae.

This value is calculated automatically - if you want to override it you can pass a different value to Enquire::set_query().

Definition at line 211 of file omquery.cc.

References DEBUGAPICALL, internal, and RETURN.

Referenced by DEFINE_TESTCASE(), and Xapian::Enquire::Internal::set_query().

TermIterator Xapian::Query::get_terms_begin (  )  const

Return a Xapian::TermIterator returning all the terms in the query, in order of termpos.

If multiple terms have the same term position, their order is unspecified. Duplicates (same term and termpos) will be removed.

Definition at line 217 of file omquery.cc.

References DEBUGAPICALL, internal, and RETURN.

Referenced by DEFINE_TESTCASE(), Xapian::Enquire::Internal::get_eset(), and Xapian::Enquire::Internal::get_matching_terms().

TermIterator Xapian::Query::get_terms_end (  )  const [inline]

Return a Xapian::TermIterator to the end of the list of terms in the query.

Definition at line 236 of file query.h.

Referenced by DEFINE_TESTCASE(), Xapian::Enquire::Internal::get_eset(), and Xapian::Enquire::Internal::get_matching_terms().

bool Xapian::Query::empty (  )  const

Test if the query is empty (i.e.

was constructed using the default ctor or with an empty iterator ctor).

Definition at line 225 of file omquery.cc.

References DEBUGAPICALL.

Referenced by DEFINE_TESTCASE(), QueryOptimiser::do_leaf(), Xapian::Enquire::Internal::get_eset(), Xapian::Enquire::Internal::get_matching_terms(), LocalSubMatch::postlist_from_op_leaf_query(), and yy_reduce().

std::string Xapian::Query::get_description (  )  const

Return a string describing this object.

Definition at line 203 of file omquery.cc.

Referenced by DEFINE_TESTCASE(), Xapian::Enquire::Internal::get_description(), main(), test_qp_default_prefix1(), test_qp_default_prefix2(), test_qp_flag_bool_any_case1(), test_qp_flag_partial1(), test_qp_flag_wildcard1(), test_qp_flag_wildcard2(), test_qp_odd_chars1(), test_qp_synonym1(), test_qp_synonym2(), test_qp_synonym3(), and test_qp_unstem_boolean_prefix().

void Xapian::Query::add_subquery ( const Query subq  )  [private]

Add a subquery by reference.

Definition at line 43 of file omquery.cc.

References Assert, DEBUGAPICALL, Xapian::Internal::RefCntPtr< T >::get(), and internal.

Referenced by Query().

void Xapian::Query::add_subquery ( const Query subq  )  [private]

Add a subquery by pointer.

Definition at line 52 of file omquery.cc.

References Assert, DEBUGAPICALL, Xapian::Internal::RefCntPtr< T >::get(), and internal.

void Xapian::Query::add_subquery ( const std::string &  tname  )  [private]

void Xapian::Query::start_construction ( Query::op  op_,
Xapian::termcount  parameter 
) [private]

Setup the internals for the query, with the appropriate operator.

Definition at line 74 of file omquery.cc.

References Assert, and DEBUGAPICALL.

Referenced by Query().

void Xapian::Query::end_construction (  )  [private]

Check that query has an appropriate number of arguments, etc,.

Definition at line 83 of file omquery.cc.

References Assert, and DEBUGAPICALL.

Referenced by Query().

void Xapian::Query::abort_construction (  )  [private]

Abort construction of the query: delete internal.

Definition at line 92 of file omquery.cc.

References Assert, and DEBUGAPICALL.

Referenced by Query().


Member Data Documentation

Xapian::Internal::RefCntPtr<Internal> Xapian::Query::internal [private]

For internal use only.

Reference counted internals.

Definition at line 54 of file query.h.

Referenced by add_subquery(), get_length(), Xapian::Enquire::Internal::get_mset(), get_terms_begin(), operator=(), Query(), and test_serialisequery1().

Xapian::Query Xapian::Query::MatchAll = Xapian::Query(string()) [static]

A query which matches all documents in the database.

Definition at line 215 of file query.h.

Referenced by DEFINE_TESTCASE().

Xapian::Query Xapian::Query::MatchNothing = Xapian::Query() [static]

A query which matches no documents.

Definition at line 218 of file query.h.

Referenced by DEFINE_TESTCASE().


The documentation for this class was generated from the following files:
Documentation for Xapian (version 1.0.10).
Generated on 24 Dec 2008 by Doxygen 1.5.2.