xapian-core  1.4.30
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ChertWritableDatabase Class Reference

A writable chert database. More...

#include <chert_database.h>

+ Inheritance diagram for ChertWritableDatabase:
+ Collaboration diagram for ChertWritableDatabase:

Public Member Functions

 ChertWritableDatabase (const string &dir, int action, int block_size)
 Create and open a writable chert database. More...
 
 ~ChertWritableDatabase ()
 
Xapian::termcount get_doclength (Xapian::docid did) const
 Virtual methods of Database::Internal. More...
 
Xapian::termcount get_unique_terms (Xapian::docid did) const
 Get the number of unique term in document. More...
 
void get_freqs (const string &term, Xapian::doccount *termfreq_ptr, Xapian::termcount *collfreq_ptr) const
 Returns frequencies for a term. More...
 
Xapian::doccount get_value_freq (Xapian::valueno slot) const
 Return the frequency of a given value slot. More...
 
std::string get_value_lower_bound (Xapian::valueno slot) const
 Get a lower bound on the values stored in the given value slot. More...
 
std::string get_value_upper_bound (Xapian::valueno slot) const
 Get an upper bound on the values stored in the given value slot. More...
 
bool term_exists (const string &tname) const
 Check whether a given term is in the database. More...
 
LeafPostListopen_post_list (const string &tname) const
 Open a posting list. More...
 
ValueListopen_value_list (Xapian::valueno slot) const
 Open a value stream. More...
 
TermListopen_allterms (const string &prefix) const
 Open an allterms list. More...
 
void add_spelling (const string &word, Xapian::termcount freqinc) const
 Add a word to the spelling dictionary. More...
 
void remove_spelling (const string &word, Xapian::termcount freqdec) const
 Remove a word from the spelling dictionary. More...
 
TermListopen_spelling_wordlist () const
 Return a termlist which returns the words which are spelling correction targets. More...
 
TermListopen_synonym_keylist (const string &prefix) const
 Open a termlist returning each term which has synonyms. More...
 
void add_synonym (const string &word, const string &synonym) const
 Add a synonym for a term. More...
 
void remove_synonym (const string &word, const string &synonym) const
 Remove a synonym for a term. More...
 
void clear_synonyms (const string &word) const
 Clear all synonyms for a term. More...
 
void set_metadata (const string &key, const string &value)
 Set the metadata associated with a given key. More...
 
void invalidate_doc_object (Xapian::Document::Internal *obj) const
 Notify the database that document is no longer valid. More...
 
bool has_uncommitted_changes () const
 Return true if there are uncommitted changes. More...
 
- Public Member Functions inherited from ChertDatabase
 ChertDatabase (const string &db_dir_, int action=Xapian::DB_READONLY_, unsigned int block_size=0u)
 Create and open a chert database. More...
 
 ~ChertDatabase ()
 
ChertCursorget_postlist_cursor () const
 Get a postlist table cursor (used by ChertValueList). More...
 
chert_revision_number_t get_revision_number () const
 Get an object holding the revision number which the tables are opened at. More...
 
Xapian::doccount get_doccount () const
 Virtual methods of Database::Internal. More...
 
Xapian::docid get_lastdocid () const
 Return the last used document id of this (sub) database. More...
 
Xapian::totallength get_total_length () const
 Return the total length of all documents in this database. More...
 
Xapian::termcount get_doclength_lower_bound () const
 Get a lower bound on the length of a document in this DB. More...
 
Xapian::termcount get_doclength_upper_bound () const
 Get an upper bound on the length of a document in this DB. More...
 
Xapian::termcount get_wdf_upper_bound (const string &term) const
 Get an upper bound on the wdf of term term. More...
 
bool has_positions () const
 Check whether this database contains any positional information. More...
 
PositionListopen_position_list (Xapian::docid did, const string &term) const
 Open a position list for the given term in the given document. More...
 
TermListopen_term_list (Xapian::docid did) const
 Open a term list. More...
 
TermListopen_spelling_termlist (const string &word) const
 Create a termlist tree from trigrams of word. More...
 
Xapian::doccount get_spelling_frequency (const string &word) const
 Return the number of times word was added as a spelling. More...
 
TermListopen_synonym_termlist (const string &term) const
 Open a termlist returning synonyms for a term. More...
 
string get_metadata (const string &key) const
 Get the metadata associated with a given key. More...
 
TermListopen_metadata_keylist (const std::string &prefix) const
 Open a termlist returning each metadata key. More...
 
void write_changesets_to_fd (int fd, const string &start_revision, bool need_whole_db, Xapian::ReplicationInfo *info)
 Write a set of changesets to a file descriptor. More...
 
string get_revision_info () const
 Get a string describing the current revision of the database. More...
 
string get_uuid () const
 Get a UUID for the database. More...
 
void request_document (Xapian::docid) const
 Request and later collect a document from the database. More...
 
void readahead_for_query (const Xapian::Query &query)
 
void throw_termlist_table_close_exception () const
 
int get_backend_info (string *path) const
 Get backend information about this database. More...
 
void get_used_docid_range (Xapian::docid &first, Xapian::docid &last) const
 Find lowest and highest docids actually in use. More...
 
bool locked () const
 Return true if the database is open for writing. More...
 
- Public Member Functions inherited from Xapian::Database::Internal
virtual ~Internal ()
 Destroy the database. More...
 
virtual void keep_alive ()
 Send a keep-alive signal to a remote database, to stop it from timing out. More...
 
void begin_transaction (bool flushed)
 Begin a transaction. More...
 
void commit_transaction ()
 Commit a transaction. More...
 
void cancel_transaction ()
 Cancel a transaction. More...
 
virtual void delete_document (const string &unique_term)
 Delete any documents indexed by a term from the database. More...
 
virtual Xapian::docid replace_document (const string &unique_term, const Xapian::Document &document)
 Replace any documents matching a term. More...
 
virtual Xapian::Document::Internalcollect_document (Xapian::docid did) const
 
- Public Member Functions inherited from Xapian::Internal::intrusive_base
 intrusive_base ()
 Construct with no references. More...
 

Private Member Functions

void check_flush_threshold ()
 Check if we should autoflush. More...
 
void flush_postlist_changes () const
 Flush any unflushed postlist changes, but don't commit them. More...
 
void close ()
 Close all the tables permanently. More...
 
void apply ()
 Apply changes. More...
 
void add_freq_delta (const string &tname, Xapian::termcount_diff tf_delta, Xapian::termcount_diff cf_delta)
 Add or modify an entry in freq_deltas. More...
 
void insert_mod_plist (Xapian::docid did, const string &tname, Xapian::termcount wdf)
 Insert modifications for a new document to the postlists. More...
 
void update_mod_plist (Xapian::docid did, const string &tname, char type, Xapian::termcount wdf)
 Update the stored modifications to the postlists. More...
 
void commit ()
 Implementation of virtual methods: see Database::Internal for details. More...
 
void cancel ()
 Cancel pending modifications to the database. More...
 
Xapian::docid add_document (const Xapian::Document &document)
 Add a new document to the database. More...
 
Xapian::docid add_document_ (Xapian::docid did, const Xapian::Document &document)
 
void delete_document (Xapian::docid did)
 Delete a document in the database. More...
 
void replace_document (Xapian::docid did, const Xapian::Document &document)
 Replace a given document in the database. More...
 
Xapian::Document::Internalopen_document (Xapian::docid did, bool lazy) const
 Open a document. More...
 

Private Attributes

map< string, pair< Xapian::termcount_diff, Xapian::termcount_diff > > freq_deltas
 Unflushed changes to term frequencies and collection frequencies. More...
 
map< Xapian::docid, Xapian::termcountdoclens
 Document lengths of new and modified documents which haven't been flushed yet. More...
 
map< string, map< Xapian::docid, pair< char, Xapian::termcount > > > mod_plists
 Modifications to posting lists. More...
 
map< Xapian::valueno, ValueStatsvalue_stats
 
Xapian::doccount change_count
 The number of documents added, deleted, or replaced since the last flush. More...
 
Xapian::doccount flush_threshold
 If change_count reaches this threshold we automatically flush. More...
 
Xapian::Document::Internalmodify_shortcut_document
 A pointer to the last document which was returned by open_document(), or NULL if there is no such valid document. More...
 
Xapian::docid modify_shortcut_docid
 The document ID for the last document returned by open_document(). More...
 

Additional Inherited Members

- Static Public Member Functions inherited from ChertDatabase
static void compact (Xapian::Compactor *compactor, const char *destdir, const std::vector< Xapian::Database::Internal * > &sources, const std::vector< Xapian::docid > &offset, size_t block_size, Xapian::Compactor::compaction_level compaction, unsigned flags, Xapian::docid last_docid)
 
- Public Attributes inherited from Xapian::Internal::intrusive_base
unsigned _refs
 Reference count. More...
 
- Protected Types inherited from Xapian::Database::Internal
enum  { TRANSACTION_UNIMPLEMENTED = -1 , TRANSACTION_NONE = 0 , TRANSACTION_UNFLUSHED = 1 , TRANSACTION_FLUSHED = 2 }
 Transaction state. More...
 
- Protected Member Functions inherited from Xapian::Database::Internal
bool transaction_active () const
 
 Internal ()
 Create a database - called only by derived classes. More...
 
void dtor_called ()
 Internal method to perform cleanup when a writable database is destroyed with uncommitted changes. More...
 
- Protected Attributes inherited from Xapian::Database::Internal
enum Xapian::Database::Internal:: { ... }  transaction_state
 Transaction state. More...
 

Detailed Description

A writable chert database.

Definition at line 336 of file chert_database.h.

Constructor & Destructor Documentation

◆ ChertWritableDatabase()

ChertWritableDatabase::ChertWritableDatabase ( const string &  dir,
int  action,
int  block_size 
)

Create and open a writable chert database.

Exceptions
Xapian::DatabaseOpeningErrorthrown if database can't be opened.
Xapian::DatabaseVersionErrorthrown if database is in an unsupported format. This implies that the database was created by an older or newer version of Xapian.
Parameters
dirdirectory holding chert tables

Definition at line 1063 of file chert_database.cc.

References flush_threshold, and LOGCALL_CTOR.

◆ ~ChertWritableDatabase()

ChertWritableDatabase::~ChertWritableDatabase ( )

Definition at line 1083 of file chert_database.cc.

References Xapian::Database::Internal::dtor_called(), and LOGCALL_DTOR.

Member Function Documentation

◆ add_document()

Xapian::docid ChertWritableDatabase::add_document ( const Xapian::Document document)
privatevirtual

Add a new document to the database.

See WritableDatabase::add_document() for more information.

Reimplemented from Xapian::Database::Internal.

Definition at line 1206 of file chert_database.cc.

References add_document_(), CHERT_MAX_DOCID, ChertDatabaseStats::get_last_docid(), ChertDatabaseStats::get_next_docid(), LOGCALL, RETURN, and ChertDatabase::stats.

◆ add_document_()

Xapian::docid ChertWritableDatabase::add_document_ ( Xapian::docid  did,
const Xapian::Document document 
)
private

◆ add_freq_delta()

void ChertWritableDatabase::add_freq_delta ( const string &  tname,
Xapian::termcount_diff  tf_delta,
Xapian::termcount_diff  cf_delta 
)
private

Add or modify an entry in freq_deltas.

Parameters
tnameThe term to modify the entry for.
tf_deltaThe change in the term frequency delta.
cf_deltaThe change in the collection frequency delta.

Definition at line 1148 of file chert_database.cc.

References freq_deltas.

Referenced by add_document_(), delete_document(), and replace_document().

◆ add_spelling()

void ChertWritableDatabase::add_spelling ( const string &  word,
Xapian::termcount  freqinc 
) const
virtual

Add a word to the spelling dictionary.

If the word is already present, its frequency is increased.

Parameters
wordThe word to add.
freqincHow much to increase its frequency by.

Reimplemented from Xapian::Database::Internal.

Definition at line 1679 of file chert_database.cc.

References ChertSpellingTable::add_word(), and ChertDatabase::spelling_table.

◆ add_synonym()

void ChertWritableDatabase::add_synonym ( const string &  term,
const string &  synonym 
) const
virtual

Add a synonym for a term.

If synonym is already a synonym for term, then no action is taken.

Reimplemented from Xapian::Database::Internal.

Definition at line 1707 of file chert_database.cc.

References ChertSynonymTable::add_synonym(), and ChertDatabase::synonym_table.

◆ apply()

void ChertWritableDatabase::apply ( )
private

◆ cancel()

void ChertWritableDatabase::cancel ( )
privatevirtual

◆ check_flush_threshold()

void ChertWritableDatabase::check_flush_threshold ( )
private

Check if we should autoflush.

Called at the end of each document changing operation.

Definition at line 1099 of file chert_database.cc.

References apply(), change_count, flush_postlist_changes(), flush_threshold, and Xapian::Database::Internal::transaction_active().

Referenced by add_document_(), delete_document(), and replace_document().

◆ clear_synonyms()

void ChertWritableDatabase::clear_synonyms ( const string &  term) const
virtual

Clear all synonyms for a term.

If term has no synonyms, no action is taken.

Reimplemented from Xapian::Database::Internal.

Definition at line 1721 of file chert_database.cc.

References ChertSynonymTable::clear_synonyms(), and ChertDatabase::synonym_table.

◆ close()

void ChertWritableDatabase::close ( )
privatevirtual

Close all the tables permanently.

Reimplemented from ChertDatabase.

Definition at line 1130 of file chert_database.cc.

References ChertDatabase::close(), commit(), LOGCALL_VOID, and Xapian::Database::Internal::transaction_active().

◆ commit()

void ChertWritableDatabase::commit ( )
privatevirtual

Implementation of virtual methods: see Database::Internal for details.

Reimplemented from Xapian::Database::Internal.

Definition at line 1090 of file chert_database.cc.

References apply(), change_count, flush_postlist_changes(), and Xapian::Database::Internal::transaction_active().

Referenced by close().

◆ delete_document()

void ChertWritableDatabase::delete_document ( Xapian::docid  did)
privatevirtual

◆ flush_postlist_changes()

void ChertWritableDatabase::flush_postlist_changes ( ) const
private

Flush any unflushed postlist changes, but don't commit them.

Definition at line 1118 of file chert_database.cc.

References change_count, doclens, freq_deltas, ChertPostListTable::merge_changes(), mod_plists, ChertDatabase::postlist_table, ChertDatabase::stats, and ChertDatabaseStats::write().

Referenced by check_flush_threshold(), commit(), and open_allterms().

◆ get_doclength()

Xapian::termcount ChertWritableDatabase::get_doclength ( Xapian::docid  did) const
virtual

Virtual methods of Database::Internal.

Reimplemented from ChertDatabase.

Definition at line 1521 of file chert_database.cc.

References doclens, ChertDatabase::get_doclength(), LOGCALL, RETURN, and Xapian::Internal::str().

◆ get_freqs()

void ChertWritableDatabase::get_freqs ( const string &  term,
Xapian::doccount termfreq_ptr,
Xapian::termcount collfreq_ptr 
) const
virtual

Returns frequencies for a term.

Parameters
termThe term to get frequencies for
termfreq_ptrPoint to return number of docs indexed by term (or NULL not to return)
collfreq_ptrPoint to return number of occurrences of term in the database (or NULL not to return)

Reimplemented from ChertDatabase.

Definition at line 1559 of file chert_database.cc.

References Assert, freq_deltas, ChertDatabase::get_freqs(), and LOGCALL_VOID.

Referenced by term_exists().

◆ get_unique_terms()

Xapian::termcount ChertWritableDatabase::get_unique_terms ( Xapian::docid  did) const
virtual

Get the number of unique term in document.

Parameters
didThe document id of the document whose number of terms is being requested.

Reimplemented from ChertDatabase.

Definition at line 1536 of file chert_database.cc.

References Assert, doclens, ChertTermList::get_approx_size(), ChertDatabase::get_unique_terms(), LOGCALL, RETURN, and Xapian::Internal::str().

◆ get_value_freq()

Xapian::doccount ChertWritableDatabase::get_value_freq ( Xapian::valueno  slot) const
virtual

Return the frequency of a given value slot.

This is the number of documents which have a (non-empty) value stored in the slot.

Parameters
slotThe value slot to examine.

Reimplemented from ChertDatabase.

Definition at line 1577 of file chert_database.cc.

References ChertDatabase::get_value_freq(), LOGCALL, RETURN, and value_stats.

◆ get_value_lower_bound()

std::string ChertWritableDatabase::get_value_lower_bound ( Xapian::valueno  slot) const
virtual

Get a lower bound on the values stored in the given value slot.

If there are no values stored in the given value slot, this will return an empty string.

Parameters
slotThe value slot to examine.

Reimplemented from ChertDatabase.

Definition at line 1587 of file chert_database.cc.

References ChertDatabase::get_value_lower_bound(), LOGCALL, RETURN, and value_stats.

◆ get_value_upper_bound()

std::string ChertWritableDatabase::get_value_upper_bound ( Xapian::valueno  slot) const
virtual

Get an upper bound on the values stored in the given value slot.

If there are no values stored in the given value slot, this will return an empty string.

Parameters
slotThe value slot to examine.

Reimplemented from ChertDatabase.

Definition at line 1597 of file chert_database.cc.

References ChertDatabase::get_value_upper_bound(), LOGCALL, RETURN, and value_stats.

◆ has_uncommitted_changes()

bool ChertWritableDatabase::has_uncommitted_changes ( ) const
virtual

◆ insert_mod_plist()

void ChertWritableDatabase::insert_mod_plist ( Xapian::docid  did,
const string &  tname,
Xapian::termcount  wdf 
)
private

Insert modifications for a new document to the postlists.

Parameters
didThe document ID to insert the entry for.
tnameThe term to insert the entry for.
wdfThe new wdf value to store.

Definition at line 1163 of file chert_database.cc.

References mod_plists.

Referenced by add_document_().

◆ invalidate_doc_object()

void ChertWritableDatabase::invalidate_doc_object ( Xapian::Document::Internal obj) const
virtual

Notify the database that document is no longer valid.

This is used to invalidate references to a document kept by a database for doing lazy updates. If we moved to using a weak_ptr instead we wouldn't need a special method for this, but it would involve a fair bit of reorganising of other parts of the code.

Reimplemented from Xapian::Database::Internal.

Definition at line 1740 of file chert_database.cc.

References modify_shortcut_docid, and modify_shortcut_document.

◆ open_allterms()

TermList * ChertWritableDatabase::open_allterms ( const string &  prefix) const
virtual

Open an allterms list.

This is a list of all the terms in the database

Parameters
prefixThe prefix to restrict the terms to.
Returns
A pointer to the newly created allterms list. This object must be deleted by the caller after use.

Reimplemented from ChertDatabase.

Definition at line 1656 of file chert_database.cc.

References change_count, flush_postlist_changes(), LOGCALL, ChertDatabase::open_allterms(), and RETURN.

◆ open_document()

Xapian::Document::Internal * ChertWritableDatabase::open_document ( Xapian::docid  did,
bool  lazy 
) const
privatevirtual

Open a document.

This is used to access the values and data associated with a document. See class Xapian::Document::Internal for further details.

Parameters
didThe document id which is being requested.
lazyNo need to check that this document actually exists. Used when we already know that this document exists (only a hint - the backend may still check).
Returns
A pointer to the newly created document object. This object must be deleted by the caller after use.

Reimplemented from ChertDatabase.

Definition at line 1510 of file chert_database.cc.

References LOGCALL, modify_shortcut_docid, modify_shortcut_document, ChertDatabase::open_document(), and RETURN.

◆ open_post_list()

LeafPostList * ChertWritableDatabase::open_post_list ( const string &  tname) const
virtual

Open a posting list.

Method defined by subclass to open a posting list. This is a list of all the documents which contain a given term.

Parameters
tnameThe term whose posting list is being requested.
Returns
A pointer to the newly created posting list. If the term doesn't exist, a LeafPostList object returning no documents is returned, which makes it easier to implement a search over multiple databases. This object must be deleted by the caller after use.

Reimplemented from ChertDatabase.

Definition at line 1616 of file chert_database.cc.

References ChertDatabase::ChertAllDocsPostList, ChertDatabase::ChertPostList, doclens, ChertDatabase::get_doccount(), ChertDatabaseStats::get_last_docid(), ChertDatabaseStats::get_wdf_upper_bound(), LOGCALL, mod_plists, RETURN, and ChertDatabase::stats.

◆ open_spelling_wordlist()

TermList * ChertWritableDatabase::open_spelling_wordlist ( ) const
virtual

Return a termlist which returns the words which are spelling correction targets.

If there are no spelling correction targets, returns NULL.

Reimplemented from ChertDatabase.

Definition at line 1693 of file chert_database.cc.

References ChertSpellingTable::merge_changes(), ChertDatabase::open_spelling_wordlist(), and ChertDatabase::spelling_table.

◆ open_synonym_keylist()

TermList * ChertWritableDatabase::open_synonym_keylist ( const string &  prefix) const
virtual

Open a termlist returning each term which has synonyms.

Parameters
prefixIf non-empty, only terms with this prefix are returned.

Reimplemented from ChertDatabase.

Definition at line 1700 of file chert_database.cc.

References ChertSynonymTable::merge_changes(), ChertDatabase::open_synonym_keylist(), and ChertDatabase::synonym_table.

◆ open_value_list()

ValueList * ChertWritableDatabase::open_value_list ( Xapian::valueno  slot) const
virtual

Open a value stream.

This returns the value in a particular slot for each document.

Parameters
slotThe value slot.
Returns
Pointer to a new ValueList object which should be deleted by the caller once it is no longer needed.

Reimplemented from ChertDatabase.

Definition at line 1645 of file chert_database.cc.

References change_count, LOGCALL, ChertValueManager::merge_changes(), ChertDatabase::open_value_list(), RETURN, and ChertDatabase::value_manager.

◆ remove_spelling()

void ChertWritableDatabase::remove_spelling ( const string &  word,
Xapian::termcount  freqdec 
) const
virtual

Remove a word from the spelling dictionary.

The word's frequency is decreased, and if would become zero or less then the word is removed completely.

Parameters
wordThe word to remove.
freqdecHow much to decrease its frequency by.

Reimplemented from Xapian::Database::Internal.

Definition at line 1686 of file chert_database.cc.

References ChertSpellingTable::remove_word(), and ChertDatabase::spelling_table.

◆ remove_synonym()

void ChertWritableDatabase::remove_synonym ( const string &  term,
const string &  synonym 
) const
virtual

Remove a synonym for a term.

If synonym isn't a synonym for term, then no action is taken.

Reimplemented from Xapian::Database::Internal.

Definition at line 1714 of file chert_database.cc.

References ChertSynonymTable::remove_synonym(), and ChertDatabase::synonym_table.

◆ replace_document()

void ChertWritableDatabase::replace_document ( Xapian::docid  did,
const Xapian::Document document 
)
privatevirtual

Replace a given document in the database.

See WritableDatabase::replace_document() for more information.

Reimplemented from Xapian::Database::Internal.

Definition at line 1338 of file chert_database.cc.

References ChertDatabaseStats::add_document(), add_document_(), add_freq_delta(), Assert, ChertTermList::at_end(), cancel(), check_flush_threshold(), ChertDatabaseStats::check_wdf(), ChertDatabaseStats::delete_document(), ChertPositionListTable::delete_positionlist(), doclens, ChertPostListTable::document_exists(), Xapian::Document::get_data(), ChertTermList::get_doclength(), ChertDatabaseStats::get_last_docid(), ChertTermList::get_termname(), ChertTermList::get_wdf(), Xapian::TermIterator::get_wdf(), Xapian::Document::internal, ChertTable::is_open(), LOGCALL_VOID, LOGLINE, MAX_SAFE_TERM_LENGTH, modify_shortcut_docid, modify_shortcut_document, ChertTermList::next(), ChertDatabase::position_table, Xapian::TermIterator::positionlist_begin(), Xapian::TermIterator::positionlist_end(), ChertDatabase::postlist_table, ChertDatabase::record_table, ChertValueManager::replace_document(), ChertRecordTable::replace_record(), ChertDatabaseStats::set_last_docid(), ChertPositionListTable::set_positionlist(), ChertTermListTable::set_termlist(), ChertDatabase::stats, STRINGIZE, Xapian::Document::termlist_begin(), Xapian::Document::termlist_end(), ChertDatabase::termlist_table, ChertDatabase::throw_termlist_table_close_exception(), update_mod_plist(), ChertDatabase::value_manager, and value_stats.

◆ set_metadata()

void ChertWritableDatabase::set_metadata ( const string &  key,
const string &  value 
)
virtual

Set the metadata associated with a given key.

See WritableDatabase::set_metadata() for more information.

Reimplemented from Xapian::Database::Internal.

Definition at line 1727 of file chert_database.cc.

References ChertTable::add(), ChertTable::del(), LOGCALL_VOID, and ChertDatabase::postlist_table.

◆ term_exists()

bool ChertWritableDatabase::term_exists ( const string &  tname) const
virtual

Check whether a given term is in the database.

Parameters
tnameThe term whose presence is being checked.

Reimplemented from ChertDatabase.

Definition at line 1607 of file chert_database.cc.

References get_freqs(), LOGCALL, and RETURN.

◆ update_mod_plist()

void ChertWritableDatabase::update_mod_plist ( Xapian::docid  did,
const string &  tname,
char  type,
Xapian::termcount  wdf 
)
private

Update the stored modifications to the postlists.

Parameters
didThe document ID to modify the entry for.
tnameThe term to modify the entry for.
typeThe type of change to the postlist.
wdfThe new wdf value to store.

If type is 'A', and an existing entry is in the stored modifications, the stored type will be set to 'M'. In all other cases, the stored type is simply the value supplied.

Definition at line 1178 of file chert_database.cc.

References Assert, and mod_plists.

Referenced by delete_document(), and replace_document().

Member Data Documentation

◆ change_count

Xapian::doccount ChertWritableDatabase::change_count
mutableprivate

The number of documents added, deleted, or replaced since the last flush.

Definition at line 353 of file chert_database.h.

Referenced by cancel(), check_flush_threshold(), commit(), flush_postlist_changes(), has_uncommitted_changes(), open_allterms(), and open_value_list().

◆ doclens

map<Xapian::docid, Xapian::termcount> ChertWritableDatabase::doclens
mutableprivate

Document lengths of new and modified documents which haven't been flushed yet.

Definition at line 342 of file chert_database.h.

Referenced by add_document_(), cancel(), delete_document(), flush_postlist_changes(), get_doclength(), get_unique_terms(), open_post_list(), and replace_document().

◆ flush_threshold

Xapian::doccount ChertWritableDatabase::flush_threshold
private

If change_count reaches this threshold we automatically flush.

Definition at line 356 of file chert_database.h.

Referenced by check_flush_threshold(), and ChertWritableDatabase().

◆ freq_deltas

map<string, pair<Xapian::termcount_diff, Xapian::termcount_diff> > ChertWritableDatabase::freq_deltas
mutableprivate

Unflushed changes to term frequencies and collection frequencies.

Definition at line 339 of file chert_database.h.

Referenced by add_freq_delta(), cancel(), flush_postlist_changes(), and get_freqs().

◆ mod_plists

map<string, map<Xapian::docid, pair<char, Xapian::termcount> > > ChertWritableDatabase::mod_plists
mutableprivate

Modifications to posting lists.

Definition at line 346 of file chert_database.h.

Referenced by cancel(), flush_postlist_changes(), insert_mod_plist(), open_post_list(), and update_mod_plist().

◆ modify_shortcut_docid

Xapian::docid ChertWritableDatabase::modify_shortcut_docid
mutableprivate

The document ID for the last document returned by open_document().

Definition at line 368 of file chert_database.h.

Referenced by delete_document(), invalidate_doc_object(), open_document(), and replace_document().

◆ modify_shortcut_document

Xapian::Document::Internal* ChertWritableDatabase::modify_shortcut_document
mutableprivate

A pointer to the last document which was returned by open_document(), or NULL if there is no such valid document.

This is used purely for comparing with a supplied document to help with optimising replace_document. When the document internals are deleted, this pointer gets set to NULL.

Definition at line 364 of file chert_database.h.

Referenced by delete_document(), invalidate_doc_object(), open_document(), and replace_document().

◆ value_stats

map<Xapian::valueno, ValueStats> ChertWritableDatabase::value_stats
mutableprivate

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