xapian-core  2.0.0
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
InMemoryPostList Class Reference

A PostList in an inmemory database. More...

#include <inmemory_database.h>

+ Inheritance diagram for InMemoryPostList:
+ Collaboration diagram for InMemoryPostList:

Public Member Functions

Xapian::docid get_docid () const
 Return the current docid. More...
 
Xapian::termcount get_wdf () const
 Return the wdf for the document at the current position. More...
 
Xapian::termcount get_wdfdocmax () const
 
PositionListread_position_list ()
 Read the position list for the term in the current document and return a pointer to it (owned by the PostList). More...
 
PositionListopen_position_list () const
 Read the position list for the term in the current document and return a pointer to it (not owned by the PostList). More...
 
PostListnext (double w_min)
 Advance the current position to the next document in the postlist. More...
 
PostListskip_to (Xapian::docid did, double w_min)
 Skip forward to the specified docid. More...
 
bool at_end () const
 Return true if the current position is past the last entry in this list. More...
 
Xapian::termcount get_wdf_upper_bound () const
 
void get_docid_range (Xapian::docid &first, Xapian::docid &last) const
 Get the bounds on the range of docids this PostList can return. More...
 
std::string get_description () const
 Return a string description of this object. More...
 
- Public Member Functions inherited from LeafPostList
 ~LeafPostList ()
 
Xapian::termcount get_collfreq () const
 Get the collection frequency of the term. More...
 
void set_termweight (const Xapian::Weight *weight_)
 Set the weighting scheme to use during matching. More...
 
double resolve_lazy_termweight (Xapian::Weight *weight_, Xapian::Weight::Internal *stats, Xapian::termcount qlen, Xapian::termcount wqf, double factor, const Xapian::Database::Internal *shard)
 
double get_weight (Xapian::termcount doclen, Xapian::termcount unique_terms, Xapian::termcount wdfdocmax) const
 Return the weight contribution for the current position. More...
 
double recalc_maxweight ()
 Recalculate the upper bound on what get_weight() can return. More...
 
Xapian::termcount count_matching_subqs () const
 Count the number of leaf subqueries which match at the current position. More...
 
void gather_position_lists (OrPositionList *orposlist)
 Gather PositionList* objects for a subtree. More...
 
virtual bool open_nearby_postlist (std::string_view term_, bool need_read_pos, LeafPostList *&pl) const
 Open another postlist from the same database. More...
 
const std::string & get_term () const
 Get the term name. More...
 
void set_term (std::string_view term_)
 Set the term name. More...
 
- Public Member Functions inherited from Xapian::Internal::PostList
virtual ~PostList ()
 We have virtual methods and want to be able to delete derived classes using a pointer to the base class, so we need a virtual destructor. More...
 
Xapian::doccount get_termfreq () const
 Get an estimate of the number of documents this PostList will return. More...
 
virtual PostListcheck (Xapian::docid did, double w_min, bool &valid)
 Check if the specified docid occurs in this postlist. More...
 
PostListnext ()
 Advance the current position to the next document in the postlist. More...
 
PostListskip_to (Xapian::docid did)
 Skip forward to the specified docid. More...
 

Private Member Functions

 InMemoryPostList (const InMemoryDatabase *db, const InMemoryTerm &imterm, std::string_view term_)
 

Private Attributes

std::vector< InMemoryPosting >::const_iterator pos
 
std::vector< InMemoryPosting >::const_iterator end
 
bool started
 
InMemoryPositionList mypositions
 List of positions of the current term. More...
 
Xapian::Internal::intrusive_ptr< const InMemoryDatabasedb
 
Xapian::termcount wdf_upper_bound
 

Friends

class InMemoryDatabase
 

Additional Inherited Members

- Protected Member Functions inherited from LeafPostList
 LeafPostList (std::string_view term_)
 Only constructable as a base class for derived classes. More...
 
- Protected Member Functions inherited from Xapian::Internal::PostList
 PostList ()
 Only constructable as a base class for derived classes. More...
 
- Protected Attributes inherited from LeafPostList
const Xapian::Weightweight = nullptr
 
std::string term
 The term name for this postlist (empty for an alldocs postlist). More...
 
Xapian::termcount collfreq
 The collection frequency of the term. More...
 
- Protected Attributes inherited from Xapian::Internal::PostList
Xapian::doccount termfreq
 Estimate of the number of documents this PostList will return. More...
 

Detailed Description

A PostList in an inmemory database.

Definition at line 134 of file inmemory_database.h.

Constructor & Destructor Documentation

◆ InMemoryPostList()

InMemoryPostList::InMemoryPostList ( const InMemoryDatabase db,
const InMemoryTerm imterm,
std::string_view  term_ 
)
private

Member Function Documentation

◆ at_end()

bool InMemoryPostList::at_end ( ) const
virtual

Return true if the current position is past the last entry in this list.

Implements Xapian::Internal::PostList.

Definition at line 177 of file inmemory_database.cc.

References db, end, InMemoryDatabase::is_closed(), pos, and InMemoryDatabase::throw_database_closed().

Referenced by get_docid(), next(), and skip_to().

◆ get_description()

string InMemoryPostList::get_description ( ) const
virtual

Return a string description of this object.

Implements Xapian::Internal::PostList.

Definition at line 197 of file inmemory_database.cc.

References Xapian::Internal::str(), LeafPostList::term, and Xapian::Internal::PostList::termfreq.

◆ get_docid()

Xapian::docid InMemoryPostList::get_docid ( ) const
virtual

Return the current docid.

Implements Xapian::Internal::PostList.

Definition at line 134 of file inmemory_database.cc.

References Assert, at_end(), db, InMemoryDatabase::is_closed(), started, and InMemoryDatabase::throw_database_closed().

Referenced by get_wdfdocmax().

◆ get_docid_range()

void InMemoryPostList::get_docid_range ( Xapian::docid first,
Xapian::docid last 
) const
virtual

Get the bounds on the range of docids this PostList can return.

Parameters
[out]firstSet to a lower bound on the docids that can be returned, or not changed if there's no known lower bound (other than 1).
[out]lastSet to an upper bound on the docids that can be returned, or not changed if there's no known upper bound (other than the highest used docid).

The default implementation (PostList::get_docid_range()) does nothing, which is suitable when there's no known lower or upper bound.

Reimplemented from Xapian::Internal::PostList.

Definition at line 184 of file inmemory_database.cc.

References Assert, end, pos, and started.

◆ get_wdf()

Xapian::termcount InMemoryPostList::get_wdf ( ) const
virtual

Return the wdf for the document at the current position.

The default implementation throws Xapian::UnimplementedError.

Reimplemented from Xapian::Internal::PostList.

Definition at line 225 of file inmemory_database.cc.

References db, InMemoryDatabase::is_closed(), and InMemoryDatabase::throw_database_closed().

◆ get_wdf_upper_bound()

Xapian::termcount InMemoryPostList::get_wdf_upper_bound ( ) const
virtual

◆ get_wdfdocmax()

Xapian::termcount InMemoryPostList::get_wdfdocmax ( ) const

Definition at line 203 of file inmemory_database.cc.

References db, get_docid(), and InMemoryDatabase::get_wdfdocmax().

◆ next()

PostList * InMemoryPostList::next ( double  w_min)
virtual

Advance the current position to the next document in the postlist.

The list starts before the first entry in the list, so next(), skip_to() or check() must be called before any methods which need the context of the current position.

Parameters
w_minThe minimum weight contribution that is needed (this is just a hint which PostList subclasses may ignore).
Returns
If a non-NULL pointer is returned, then the caller should substitute the returned pointer for its pointer to us, and then delete us. This "pruning" can only happen for a non-leaf subclass of this class.

Implements Xapian::Internal::PostList.

Definition at line 143 of file inmemory_database.cc.

References Assert, at_end(), db, end, InMemoryDatabase::is_closed(), pos, started, and InMemoryDatabase::throw_database_closed().

◆ open_position_list()

PositionList * InMemoryPostList::open_position_list ( ) const
virtual

Read the position list for the term in the current document and return a pointer to it (not owned by the PostList).

The default implementation throws Xapian::UnimplementedError.

Reimplemented from Xapian::Internal::PostList.

Definition at line 217 of file inmemory_database.cc.

References db, InMemoryDatabase::is_closed(), pos, and InMemoryDatabase::throw_database_closed().

◆ read_position_list()

PositionList * InMemoryPostList::read_position_list ( )
virtual

Read the position list for the term in the current document and return a pointer to it (owned by the PostList).

The default implementation throws Xapian::UnimplementedError.

Reimplemented from Xapian::Internal::PostList.

Definition at line 209 of file inmemory_database.cc.

References InMemoryPositionList::assign(), db, InMemoryDatabase::is_closed(), mypositions, pos, and InMemoryDatabase::throw_database_closed().

◆ skip_to()

PostList * InMemoryPostList::skip_to ( Xapian::docid  did,
double  w_min 
)
virtual

Skip forward to the specified docid.

If the specified docid isn't in the list, position ourselves on the first document after it (or at_end() if no greater docids are present).

Parameters
w_minThe minimum weight contribution that is needed (this is just a hint which PostList subclasses may ignore).
Returns
If a non-NULL pointer is returned, then the caller should substitute the returned pointer for its pointer to us, and then delete us. This "pruning" can only happen for a non-leaf subclass of this class.

Implements Xapian::Internal::PostList.

Definition at line 157 of file inmemory_database.cc.

References Assert, at_end(), db, InMemoryDatabase::is_closed(), Xapian::Internal::PostList::next(), started, and InMemoryDatabase::throw_database_closed().

Friends And Related Function Documentation

◆ InMemoryDatabase

friend class InMemoryDatabase
friend

Definition at line 135 of file inmemory_database.h.

Member Data Documentation

◆ db

Xapian::Internal::intrusive_ptr<const InMemoryDatabase> InMemoryPostList::db
private

◆ end

std::vector<InMemoryPosting>::const_iterator InMemoryPostList::end
private

Definition at line 139 of file inmemory_database.h.

Referenced by at_end(), get_docid_range(), InMemoryPostList(), and next().

◆ mypositions

InMemoryPositionList InMemoryPostList::mypositions
private

List of positions of the current term.

This list is populated when read_position_list() is called.

Definition at line 145 of file inmemory_database.h.

Referenced by read_position_list().

◆ pos

std::vector<InMemoryPosting>::const_iterator InMemoryPostList::pos
private

◆ started

bool InMemoryPostList::started
private

Definition at line 140 of file inmemory_database.h.

Referenced by get_docid(), get_docid_range(), next(), and skip_to().

◆ wdf_upper_bound

Xapian::termcount InMemoryPostList::wdf_upper_bound
private

Definition at line 149 of file inmemory_database.h.

Referenced by get_wdf_upper_bound(), and InMemoryPostList().


The documentation for this class was generated from the following files: