xapian-core  1.4.27
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ChertSpellingTable Class Reference

#include <chert_spelling.h>

+ Inheritance diagram for ChertSpellingTable:
+ Collaboration diagram for ChertSpellingTable:

Public Member Functions

 ChertSpellingTable (const std::string &dbdir, bool readonly)
 Create a new ChertSpellingTable object. More...
 
void merge_changes ()
 
void add_word (const std::string &word, Xapian::termcount freqinc)
 
void remove_word (const std::string &word, Xapian::termcount freqdec)
 
TermListopen_termlist (const std::string &word)
 
Xapian::doccount get_word_frequency (const std::string &word) const
 
bool is_modified () const
 Override methods of ChertTable. More...
 
void flush_db ()
 Override methods of ChertTable. More...
 
void cancel ()
 Override methods of ChertTable. More...
 
- Public Member Functions inherited from ChertLazyTable
 ChertLazyTable (const char *name_, const std::string &path, bool readonly, int z_strategy)
 Create a new lazy table. More...
 
void create_and_open (unsigned int blocksize)
 Lazy version of ChertTable::create_and_open(). More...
 
- Public Member Functions inherited from ChertTable
 ChertTable (const char *tablename_, const std::string &path_, bool readonly_, int compress_strategy_=DONT_COMPRESS, bool lazy=false)
 Create a new Btree object. More...
 
 ~ChertTable ()
 Close the Btree. More...
 
void close (bool permanent=false)
 Close the Btree. More...
 
bool readahead_key (const string &key) const
 
bool exists () const
 Determine whether the btree exists on disk. More...
 
void open ()
 Open the btree at the latest revision. More...
 
bool open (chert_revision_number_t revision_)
 Open the btree at a given revision. More...
 
bool is_open () const
 Return true if this table is open. More...
 
void flush_db ()
 Flush any outstanding changes to the DB file of the table. More...
 
void commit (chert_revision_number_t revision, int changes_fd=-1, const std::string *changes_tail=NULL)
 Commit any outstanding changes to the table. More...
 
void write_changed_blocks (int changes_fd)
 Append the list of blocks changed to a changeset file. More...
 
void cancel ()
 Cancel any outstanding changes. More...
 
bool get_exact_entry (const std::string &key, std::string &tag) const
 Read an entry from the table, if and only if it is exactly that being asked for. More...
 
bool key_exists (const std::string &key) const
 Check if a key exists in the Btree. More...
 
bool read_tag (Cursor *C_, std::string *tag, bool keep_compressed) const
 Read the tag value for the key pointed to by cursor C_. More...
 
void add (const std::string &key, std::string tag, bool already_compressed=false)
 Add a key/tag pair to the table, replacing any existing pair with the same key. More...
 
bool del (const std::string &key)
 Delete an entry from the table. More...
 
void erase ()
 Erase this table from disk. More...
 
void set_block_size (unsigned int block_size_)
 Set the block size. More...
 
unsigned int get_block_size () const
 Get the block size. More...
 
void create_and_open (unsigned int blocksize)
 Create a new empty btree structure on disk and open it at the initial revision. More...
 
void set_full_compaction (bool parity)
 
chert_revision_number_t get_latest_revision_number () const
 Get the latest revision number stored in this table. More...
 
chert_revision_number_t get_open_revision_number () const
 Get the revision number at which this table is currently open. More...
 
chert_tablesize_t get_entry_count () const
 Return a count of the number of entries in the table. More...
 
bool empty () const
 Return true if there are no entries in the table. More...
 
ChertCursorcursor_get () const
 Get a cursor for reading from the table. More...
 
bool is_modified () const
 Determine whether the object contains uncommitted modifications. More...
 
void set_max_item_size (size_t block_capacity)
 Set the maximum item size given the block capacity. More...
 
string get_path () const
 

Private Member Functions

void toggle_word (const std::string &word)
 
void toggle_fragment (fragment frag, const std::string &word)
 

Private Attributes

std::map< std::string, Xapian::termcountwordfreq_changes
 
std::map< fragment, std::set< std::string > > termlist_deltas
 Changes to make to the termlists. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from ChertTable
static void throw_database_closed ()
 Throw an exception indicating that the database is closed. More...
 
- Protected Member Functions inherited from ChertTable
bool do_open_to_read (bool revision_supplied, chert_revision_number_t revision_)
 Perform the opening operation to read. More...
 
bool do_open_to_write (bool revision_supplied, chert_revision_number_t revision_, bool create_db=false)
 Perform the opening operation to write. More...
 
bool basic_open (bool revision_supplied, chert_revision_number_t revision)
 
bool find (Cursor *) const
 find(C_) searches for the key of B->kt in the B-tree. More...
 
int delete_kt ()
 
void read_block (uint4 n, uint8_t *p) const
 read_block(n, p) reads block n of the DB file to address p. More...
 
void write_block (uint4 n, const uint8_t *p) const
 write_block(n, p) writes block n in the DB file from address p. More...
 
void set_overwritten () const
 
void block_to_cursor (Cursor *C_, int j, uint4 n) const
 
void alter ()
 Btree::alter(); is called when the B-tree is to be altered. More...
 
void compact (uint8_t *p)
 compact(p) compact the block at p by shuffling all the items up to the end. More...
 
void enter_key (int j, Key prevkey, Key newkey)
 enter_key(j, prevkey, newkey) is called after a block split. More...
 
int mid_point (uint8_t *p) const
 mid_point(p) finds the directory entry in c that determines the approximate mid point of the data in the block at p. More...
 
void add_item_to_block (uint8_t *p, Item_wr kt, int c)
 add_item_to_block(p, kt_, c) adds item kt_ to the block at p. More...
 
void add_item (Item_wr kt, int j)
 ChertTable::add_item(kt_, j) adds item kt_ to the block at cursor level C[j]. More...
 
void delete_item (int j, bool repeatedly)
 ChertTable::delete_item(j, repeatedly) is (almost) the converse of add_item. More...
 
int add_kt (bool found)
 add_kt(found) adds the item (key-tag pair) at B->kt into the B-tree, using cursor C. More...
 
void read_root ()
 
void split_root (uint4 split_n)
 Btree needs to gain a new level to insert more items: so split root block and construct a new one. More...
 
void form_key (const std::string &key) const
 
char other_base_letter () const
 
void lazy_alloc_deflate_zstream () const
 Allocate the zstream for deflating, if not already allocated. More...
 
void lazy_alloc_inflate_zstream () const
 Allocate the zstream for inflating, if not already allocated. More...
 
bool prev (Cursor *C_, int j) const
 
bool next (Cursor *C_, int j) const
 
bool prev_default (Cursor *C_, int j) const
 
bool next_default (Cursor *C_, int j) const
 
bool prev_for_sequential (Cursor *C_, int dummy) const
 
bool next_for_sequential (Cursor *C_, int dummy) const
 
- Static Protected Member Functions inherited from ChertTable
static int find_in_block (const uint8_t *p, Key key, bool leaf, int c)
 find_in_block(p, key, leaf, c) searches for the key in the block at p. More...
 
static uint4 block_given_by (const uint8_t *p, int c)
 block_given_by(p, c) finds the item at block address p, directory offset c, and returns its tag value as an integer. More...
 
- Protected Attributes inherited from ChertTable
const char * tablename
 The name of the table (used when writing changesets). More...
 
chert_revision_number_t revision_number
 revision number of the opened B-tree. More...
 
chert_tablesize_t item_count
 keeps a count of the number of items in the B-tree. More...
 
unsigned int block_size
 block size of the B tree in bytes More...
 
chert_revision_number_t latest_revision_number
 Revision number of the other base, or zero if there is only one base file. More...
 
bool both_bases
 set to true if baseA and baseB both exist as valid bases. More...
 
char base_letter
 the value 'A' or 'B' of the current base More...
 
bool faked_root_block
 true if the root block is faked (not written to disk). More...
 
bool sequential
 true iff the data has been written in a single write in sequential order. More...
 
int handle
 File descriptor of the table. More...
 
int level
 number of levels, counting from 0 More...
 
uint4 root
 the root block of the B-tree More...
 
Item_wr kt
 buffer of size block_size for making up key-tag items More...
 
uint8_t * buffer
 buffer of size block_size for reforming blocks More...
 
ChertTable_base base
 For writing back as file baseA or baseB. More...
 
std::string name
 The path name of the B tree. More...
 
int seq_count
 count of the number of successive instances of purely sequential addition, starting at SEQ_START_POINT (neg) and going up to zero. More...
 
uint4 changed_n
 the last block to be changed by an addition More...
 
int changed_c
 directory offset corresponding to last block to be changed by an addition More...
 
size_t max_item_size
 maximum size of an item (key-tag pair) More...
 
bool Btree_modified
 Set to true the first time the B-tree is modified. More...
 
bool full_compaction
 set to true when full compaction is to be achieved More...
 
bool writable
 Set to true when the database is opened to write. More...
 
bool cursor_created_since_last_modification
 Flag for tracking when cursors need to rebuild. More...
 
unsigned long cursor_version
 Version count for tracking when cursors need to rebuild. More...
 
Cursor C [BTREE_CURSOR_LEVELS]
 
uint8_t * split_p
 Buffer used when splitting a block. More...
 
int compress_strategy
 DONT_COMPRESS or Z_DEFAULT_STRATEGY, Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE. More...
 
z_stream * deflate_zstream
 Zlib state object for deflating. More...
 
z_stream * inflate_zstream
 Zlib state object for inflating. More...
 
bool lazy
 If true, don't create the table until it's needed. More...
 
uint4 last_readahead
 Last block readahead_key() preread. More...
 

Detailed Description

Definition at line 55 of file chert_spelling.h.

Constructor & Destructor Documentation

◆ ChertSpellingTable()

ChertSpellingTable::ChertSpellingTable ( const std::string &  dbdir,
bool  readonly 
)
inline

Create a new ChertSpellingTable object.

This method does not create or open the table on disk - you must call the create() or open() methods respectively!

Parameters
dbdirThe directory the chert database is stored in.
readonlytrue if we're opening read-only, else false.

Definition at line 80 of file chert_spelling.h.

Member Function Documentation

◆ add_word()

void ChertSpellingTable::add_word ( const std::string &  word,
Xapian::termcount  freqinc 
)

Definition at line 125 of file chert_spelling.cc.

References unpack_uint_last().

Referenced by ChertWritableDatabase::add_spelling().

◆ cancel()

void ChertSpellingTable::cancel ( )
inline

Override methods of ChertTable.

NB: these aren't virtual, but we always call them on the subclass in cases where it matters.

Definition at line 110 of file chert_spelling.h.

References ChertTable::cancel().

Referenced by ChertDatabase::cancel().

◆ flush_db()

void ChertSpellingTable::flush_db ( )
inline

Override methods of ChertTable.

NB: these aren't virtual, but we always call them on the subclass in cases where it matters.

Definition at line 105 of file chert_spelling.h.

References ChertTable::flush_db().

Referenced by ChertDatabase::set_revision_number().

◆ get_word_frequency()

Xapian::doccount ChertSpellingTable::get_word_frequency ( const std::string &  word) const

Definition at line 370 of file chert_spelling.cc.

References unpack_uint_last().

Referenced by ChertDatabase::get_spelling_frequency().

◆ is_modified()

bool ChertSpellingTable::is_modified ( ) const
inline

Override methods of ChertTable.

NB: these aren't virtual, but we always call them on the subclass in cases where it matters.

Definition at line 101 of file chert_spelling.h.

References ChertTable::is_modified().

Referenced by ChertDatabase::apply(), and ChertWritableDatabase::has_uncommitted_changes().

◆ merge_changes()

void ChertSpellingTable::merge_changes ( )

◆ open_termlist()

TermList * ChertSpellingTable::open_termlist ( const std::string &  word)

Definition at line 254 of file chert_spelling.cc.

References Assert, AssertRel, and fragment::data.

Referenced by ChertDatabase::open_spelling_termlist().

◆ remove_word()

void ChertSpellingTable::remove_word ( const std::string &  word,
Xapian::termcount  freqdec 
)

Definition at line 160 of file chert_spelling.cc.

References unpack_uint_last().

Referenced by ChertWritableDatabase::remove_spelling().

◆ toggle_fragment()

void ChertSpellingTable::toggle_fragment ( fragment  frag,
const std::string &  word 
)
private

Definition at line 109 of file chert_spelling.cc.

◆ toggle_word()

void ChertSpellingTable::toggle_word ( const std::string &  word)
private

Definition at line 204 of file chert_spelling.cc.

References fragment::data.

Member Data Documentation

◆ termlist_deltas

std::map<fragment, std::set<std::string> > ChertSpellingTable::termlist_deltas
private

Changes to make to the termlists.

This list is essentially xor-ed with the list on disk, so an entry here either means a new entry needs to be added on disk, or an existing entry on disk needs to be removed. We do it this way so we don't need to store an additional add/remove flag for every word.

Definition at line 69 of file chert_spelling.h.

◆ wordfreq_changes

std::map<std::string, Xapian::termcount> ChertSpellingTable::wordfreq_changes
private

Definition at line 59 of file chert_spelling.h.


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