22 #ifndef XAPIAN_INCLUDED_CHERT_VALUES_H
23 #define XAPIAN_INCLUDED_CHERT_VALUES_H
41 std::string key(
"\0\xd8", 2);
50 const char * p = key.data();
51 const char * end = p + key.length();
53 if (end - p < 2 || *p++ !=
'\0' || *p++ !=
'\xd8')
return 0;
58 if (slot != required_slot)
return 0;
88 std::map<Xapian::docid, std::string>
slots;
90 std::map<Xapian::valueno, std::map<Xapian::docid, std::string>>
changes;
95 const std::string & val);
101 std::string &chunk)
const;
120 std::map<Xapian::valueno, ValueStats> & value_stats);
123 std::map<Xapian::valueno, ValueStats> & value_stats);
126 std::map<Xapian::valueno, ValueStats> & value_stats);
130 void get_all_values(std::map<Xapian::valueno, std::string> & values,
155 void set_value_stats(std::map<Xapian::valueno, ValueStats> & value_stats);
Wrapper around standard unique_ptr template.
std::string make_valuechunk_key(Xapian::valueno slot, Xapian::docid did)
Generate a key for a value stream chunk.
Xapian::docid docid_from_key(Xapian::valueno required_slot, const std::string &key)
A cursor pointing to a position in a Btree table, for reading several entries in order,...
Xapian::docid get_chunk_containing_did(Xapian::valueno slot, Xapian::docid did, std::string &chunk) const
AutoPtr< ChertCursor > cursor
Xapian::doccount get_value_freq(Xapian::valueno slot) const
void get_all_values(std::map< Xapian::valueno, std::string > &values, Xapian::docid did) const
void set_value_stats(std::map< Xapian::valueno, ValueStats > &value_stats)
Write the updated statistics to the table.
ValueStats mru_valstats
The most recently used value statistics.
std::map< Xapian::docid, std::string > slots
std::string get_value(Xapian::docid did, Xapian::valueno slot) const
std::string get_value_lower_bound(Xapian::valueno slot) const
void delete_document(Xapian::docid did, std::map< Xapian::valueno, ValueStats > &value_stats)
void remove_value(Xapian::docid did, Xapian::valueno slot)
void add_document(Xapian::docid did, const Xapian::Document &doc, std::map< Xapian::valueno, ValueStats > &value_stats)
void add_value(Xapian::docid did, Xapian::valueno slot, const std::string &val)
std::map< Xapian::valueno, std::map< Xapian::docid, std::string > > changes
ChertPostListTable * postlist_table
void replace_document(Xapian::docid did, const Xapian::Document &doc, std::map< Xapian::valueno, ValueStats > &value_stats)
std::string get_value_upper_bound(Xapian::valueno slot) const
ChertValueManager(ChertPostListTable *postlist_table_, ChertTermListTable *termlist_table_)
Create a new ChertValueManager object.
Xapian::valueno mru_slot
The value number for the most recently used value statistics.
void get_value_stats(Xapian::valueno slot) const
Get the statistics for value slot slot.
ChertTermListTable * termlist_table
ValueChunkReader(const char *p_, size_t len, Xapian::docid did_)
const std::string & get_value() const
void assign(const char *p_, size_t len, Xapian::docid did_)
ValueChunkReader()
Create a ValueChunkReader which is already at_end().
Xapian::docid get_docid() const
void skip_to(Xapian::docid target)
DatabaseCorruptError indicates database corruption was detected.
A handle representing a document in a Xapian database.
Hierarchy of classes which Xapian can throw as exceptions.
The Xapian namespace contains public interfaces for the Xapian library.
const valueno BAD_VALUENO
Reserved value to indicate "no valueno".
unsigned valueno
The number for a value slot in a document.
unsigned XAPIAN_DOCID_BASE_TYPE doccount
A count of documents.
unsigned XAPIAN_DOCID_BASE_TYPE docid
A unique identifier for a document.
Pack types into strings and unpack them again.
void C_pack_uint_preserving_sort(std::string &s, U value)
Append an encoded unsigned integer to a string, preserving the sort order.
bool C_unpack_uint_preserving_sort(const char **p, const char *end, U *result)
Decode an "sort preserved" unsigned integer from a string.
bool unpack_uint(const char **p, const char *end, U *result)
Decode an unsigned integer from a string.
void pack_uint(std::string &s, U value)
Append an encoded unsigned integer to a string.
Class to hold statistics for a given slot.
std::string lower_bound
A lower bound on the values stored in the given value slot.
std::string upper_bound
An upper bound on the values stored in the given value slot.
Xapian::doccount freq
The number of documents which have a (non-empty) value stored in the slot.