22 #ifndef XAPIAN_INCLUDED_GLASS_VALUES_H
23 #define XAPIAN_INCLUDED_GLASS_VALUES_H
43 std::string key(
"\0\xd8", 2);
52 const char * p = key.data();
53 const char * end = p + key.length();
55 if (end - p < 2 || *p++ !=
'\0' || *p++ !=
'\xd8')
return 0;
60 if (slot != required_slot)
return 0;
92 std::map<Xapian::docid, std::string>
slots;
94 std::map<Xapian::valueno, std::map<Xapian::docid, std::string>>
changes;
99 const std::string & val);
105 std::string &chunk)
const;
124 std::map<Xapian::valueno, ValueStats> & value_stats);
127 std::map<Xapian::valueno, ValueStats> & value_stats);
130 std::map<Xapian::valueno, ValueStats> & value_stats);
134 void get_all_values(std::map<Xapian::valueno, std::string> & values,
159 void set_value_stats(std::map<Xapian::valueno, ValueStats> & value_stats);
Wrapper around standard unique_ptr template.
void get_value_stats(Xapian::valueno slot) const
Get the statistics for value slot slot.
void add_document(Xapian::docid did, const Xapian::Document &doc, std::map< Xapian::valueno, ValueStats > &value_stats)
std::string get_value(Xapian::docid did, Xapian::valueno slot) const
void set_value_stats(std::map< Xapian::valueno, ValueStats > &value_stats)
Write the updated statistics to the table.
std::map< Xapian::valueno, std::map< Xapian::docid, std::string > > changes
void remove_value(Xapian::docid did, Xapian::valueno slot)
std::map< Xapian::docid, std::string > slots
Xapian::valueno mru_slot
The value number for the most recently used value statistics.
AutoPtr< GlassCursor > cursor
void get_all_values(std::map< Xapian::valueno, std::string > &values, Xapian::docid did) const
Xapian::doccount get_value_freq(Xapian::valueno slot) const
void add_value(Xapian::docid did, Xapian::valueno slot, const std::string &val)
GlassTermListTable * termlist_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
ValueStats mru_valstats
The most recently used value statistics.
GlassValueManager(GlassPostListTable *postlist_table_, GlassTermListTable *termlist_table_)
Create a new GlassValueManager object.
Xapian::docid get_chunk_containing_did(Xapian::valueno slot, Xapian::docid did, std::string &chunk) const
GlassPostListTable * postlist_table
std::string get_value_lower_bound(Xapian::valueno slot) const
void delete_document(Xapian::docid did, std::map< Xapian::valueno, ValueStats > &value_stats)
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_)
Xapian::docid get_docid() const
ValueChunkReader()
Create a ValueChunkReader which is already at_end().
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.
Interface to Btree cursors.
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)
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.
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.
bool unpack_uint_preserving_sort(const char **p, const char *end, U *result)
Decode a "sort preserved" unsigned integer from a string.
void pack_uint_preserving_sort(std::string &s, U value)
Append an encoded unsigned integer to a string, preserving the sort order.
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.