#include <chert_spelling.h>


Public Member Functions | |
| ChertSpellingTable (const std::string &dbdir, bool readonly) | |
| Create a new ChertSpellingTable object. | |
| 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. | |
| void | flush_db () |
| Override methods of ChertTable. | |
| void | cancel () |
| Override methods of ChertTable. | |
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. | |
Definition at line 55 of file chert_spelling.h.
| 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!
| 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 126 of file chert_spelling.cc.
References ChertTable::get_exact_entry(), toggle_word(), unpack_uint_last(), and wordfreq_changes.
Referenced by ChertWritableDatabase::add_spelling().
| 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.
Reimplemented from ChertTable.
Definition at line 110 of file chert_spelling.h.
References termlist_deltas, and wordfreq_changes.
Referenced by ChertDatabase::cancel().
| 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.
Reimplemented from ChertTable.
Definition at line 105 of file chert_spelling.h.
References merge_changes().
Referenced by ChertDatabase::set_revision_number().
| Xapian::doccount ChertSpellingTable::get_word_frequency | ( | const std::string & | word | ) | const |
Definition at line 371 of file chert_spelling.cc.
References ChertTable::get_exact_entry(), unpack_uint_last(), and wordfreq_changes.
Referenced by ChertDatabase::get_spelling_frequency().
| 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.
Reimplemented from ChertTable.
Definition at line 101 of file chert_spelling.h.
References wordfreq_changes.
Referenced by ChertDatabase::apply().
| void ChertSpellingTable::merge_changes | ( | ) |
Definition at line 44 of file chert_spelling.cc.
References ChertTable::add(), PrefixCompressedStringWriter::append(), Assert, PrefixCompressedStringItor::at_end(), ChertTable::del(), ChertTable::get_exact_entry(), pack_uint_last(), termlist_deltas, and wordfreq_changes.
Referenced by flush_db(), ChertWritableDatabase::open_spelling_wordlist(), and open_termlist().
| TermList * ChertSpellingTable::open_termlist | ( | const std::string & | word | ) |
Definition at line 255 of file chert_spelling.cc.
References Assert, AssertRel, fragment::data, ChertTable::get_exact_entry(), merge_changes(), and wordfreq_changes.
Referenced by ChertDatabase::open_spelling_termlist().
| void ChertSpellingTable::remove_word | ( | const std::string & | word, | |
| Xapian::termcount | freqdec | |||
| ) |
Definition at line 161 of file chert_spelling.cc.
References ChertTable::get_exact_entry(), toggle_word(), unpack_uint_last(), and wordfreq_changes.
Referenced by ChertWritableDatabase::remove_spelling().
| void ChertSpellingTable::toggle_fragment | ( | fragment | frag, | |
| const std::string & | word | |||
| ) | [private] |
Definition at line 110 of file chert_spelling.cc.
References termlist_deltas.
Referenced by toggle_word().
| void ChertSpellingTable::toggle_word | ( | const std::string & | word | ) | [private] |
Definition at line 205 of file chert_spelling.cc.
References fragment::data, and toggle_fragment().
Referenced by add_word(), and remove_word().
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.
Referenced by cancel(), merge_changes(), and toggle_fragment().
std::map<std::string, Xapian::termcount> ChertSpellingTable::wordfreq_changes [private] |
Definition at line 59 of file chert_spelling.h.
Referenced by add_word(), cancel(), get_word_frequency(), is_modified(), merge_changes(), open_termlist(), and remove_word().