xapian-core
1.4.27
|
#include <chert_spelling.h>
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) |
TermList * | open_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... | |
ChertCursor * | cursor_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::termcount > | wordfreq_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... | |
Definition at line 55 of file chert_spelling.h.
|
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!
dbdir | The directory the chert database is stored in. |
readonly | true if we're opening read-only, else false. |
Definition at line 80 of file chert_spelling.h.
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().
|
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().
|
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().
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().
|
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().
void ChertSpellingTable::merge_changes | ( | ) |
Definition at line 44 of file chert_spelling.cc.
References PrefixCompressedStringWriter::append(), Assert, PrefixCompressedStringItor::at_end(), and pack_uint_last().
Referenced by ChertWritableDatabase::open_spelling_wordlist().
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().
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().
|
private |
Definition at line 109 of file chert_spelling.cc.
|
private |
Definition at line 204 of file chert_spelling.cc.
References fragment::data.
|
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.
|
private |
Definition at line 59 of file chert_spelling.h.