diff options
Diffstat (limited to 'rep/usr/include/xapian/database.h.gcov.html')
| -rw-r--r-- | rep/usr/include/xapian/database.h.gcov.html | 803 |
1 files changed, 0 insertions, 803 deletions
diff --git a/rep/usr/include/xapian/database.h.gcov.html b/rep/usr/include/xapian/database.h.gcov.html deleted file mode 100644 index 2a75331..0000000 --- a/rep/usr/include/xapian/database.h.gcov.html +++ /dev/null @@ -1,803 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - /usr/include/xapian/database.h</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">usr/include/xapian</a> - database.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">4</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">100.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">4</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /** \file database.h -<span class="lineNum"> 2 </span> : * \brief API for working with Xapian databases -<span class="lineNum"> 3 </span> : */ -<span class="lineNum"> 4 </span> : /* Copyright 1999,2000,2001 BrightStation PLC -<span class="lineNum"> 5 </span> : * Copyright 2002 Ananova Ltd -<span class="lineNum"> 6 </span> : * Copyright 2002,2003,2004,2005,2006,2007 Olly Betts -<span class="lineNum"> 7 </span> : * Copyright 2006 Richard Boulton -<span class="lineNum"> 8 </span> : * -<span class="lineNum"> 9 </span> : * This program is free software; you can redistribute it and/or -<span class="lineNum"> 10 </span> : * modify it under the terms of the GNU General Public License as -<span class="lineNum"> 11 </span> : * published by the Free Software Foundation; either version 2 of the -<span class="lineNum"> 12 </span> : * License, or (at your option) any later version. -<span class="lineNum"> 13 </span> : * -<span class="lineNum"> 14 </span> : * This program is distributed in the hope that it will be useful, -<span class="lineNum"> 15 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of -<span class="lineNum"> 16 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -<span class="lineNum"> 17 </span> : * GNU General Public License for more details. -<span class="lineNum"> 18 </span> : * -<span class="lineNum"> 19 </span> : * You should have received a copy of the GNU General Public License -<span class="lineNum"> 20 </span> : * along with this program; if not, write to the Free Software -<span class="lineNum"> 21 </span> : * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 -<span class="lineNum"> 22 </span> : * USA -<span class="lineNum"> 23 </span> : */ -<span class="lineNum"> 24 </span> : -<span class="lineNum"> 25 </span> : #ifndef XAPIAN_INCLUDED_DATABASE_H -<span class="lineNum"> 26 </span> : #define XAPIAN_INCLUDED_DATABASE_H -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : #include <string> -<span class="lineNum"> 29 </span> : #include <vector> -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span> : #include <xapian/base.h> -<span class="lineNum"> 32 </span> : #include <xapian/types.h> -<span class="lineNum"> 33 </span> : #include <xapian/positioniterator.h> -<span class="lineNum"> 34 </span> : #include <xapian/postingiterator.h> -<span class="lineNum"> 35 </span> : #include <xapian/termiterator.h> -<span class="lineNum"> 36 </span> : #include <xapian/visibility.h> -<span class="lineNum"> 37 </span> : -<span class="lineNum"> 38 </span> : /// The Xapian library lives in the Xapian namespace. -<span class="lineNum"> 39 </span> : namespace Xapian { -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span> : class Document; -<span class="lineNum"> 42 </span> : -<span class="lineNum"> 43 </span> : /** This class is used to access a database, or a group of databases. -<span class="lineNum"> 44 </span> : * -<span class="lineNum"> 45 </span> : * For searching, this class is used in conjunction with an Enquire object. -<span class="lineNum"> 46 </span> : * -<span class="lineNum"> 47 </span> : * @exception InvalidArgumentError will be thrown if an invalid -<span class="lineNum"> 48 </span> : * argument is supplied, for example, an unknown database type. -<span class="lineNum"> 49 </span> : * -<span class="lineNum"> 50 </span> : * @exception DatabaseOpeningError may be thrown if the database cannot -<span class="lineNum"> 51 </span> : * be opened (for example, a required file cannot be found). -<span class="lineNum"> 52 </span> : * -<span class="lineNum"> 53 </span> : * @exception DatabaseVersionError may be thrown if the database is in an -<span class="lineNum"> 54 </span> : * unsupported format (for example, created by a newer version of Xapian -<span class="lineNum"> 55 </span> : * which uses an incompatible format). -<span class="lineNum"> 56 </span> : */ -<span class="lineNum"> 57 </span> : class XAPIAN_VISIBILITY_DEFAULT Database { -<span class="lineNum"> 58 </span> : public: -<span class="lineNum"> 59 </span> : class Internal; -<span class="lineNum"> 60 </span> : /// @private @internal Reference counted internals. -<span class="lineNum"> 61 </span> : std::vector<Xapian::Internal::RefCntPtr<Internal> > internal; -<span class="lineNum"> 62 </span> : -<span class="lineNum"> 63 </span> : /** Add an existing database (or group of databases) to those -<span class="lineNum"> 64 </span> : * accessed by this object. -<span class="lineNum"> 65 </span> : * -<span class="lineNum"> 66 </span> : * @param database the database(s) to add. -<span class="lineNum"> 67 </span> : */ -<span class="lineNum"> 68 </span> : void add_database(const Database & database); -<span class="lineNum"> 69 </span> : -<span class="lineNum"> 70 </span> : /** Create a Database with no databases in. -<span class="lineNum"> 71 </span> : */ -<span class="lineNum"> 72 </span> : Database(); -<span class="lineNum"> 73 </span> : -<span class="lineNum"> 74 </span> : /** Open a Database, automatically determining the database -<span class="lineNum"> 75 </span> : * backend to use. -<span class="lineNum"> 76 </span> : * -<span class="lineNum"> 77 </span> : * @param path directory that the database is stored in. -<span class="lineNum"> 78 </span> : */ -<span class="lineNum"> 79 </span> : explicit Database(const std::string &path); -<span class="lineNum"> 80 </span> : -<span class="lineNum"> 81 </span> : /** @private @internal Create a Database from its internals. -<span class="lineNum"> 82 </span> : */ -<span class="lineNum"> 83 </span> : explicit Database(Internal *internal); -<span class="lineNum"> 84 </span> : -<span class="lineNum"> 85 </span> : /** Destroy this handle on the database. -<span class="lineNum"> 86 </span> : * -<span class="lineNum"> 87 </span> : * If there are no copies of this object remaining, the database(s) -<span class="lineNum"> 88 </span> : * will be closed. -<span class="lineNum"> 89 </span> : */ -<span class="lineNum"> 90 </span> : virtual ~Database(); -<span class="lineNum"> 91 </span> : -<span class="lineNum"> 92 </span> : /** Copying is allowed. The internals are reference counted, so -<span class="lineNum"> 93 </span> : * copying is cheap. -<span class="lineNum"> 94 </span> : */ -<span class="lineNum"> 95 </span> : Database(const Database &other); -<span class="lineNum"> 96 </span> : -<span class="lineNum"> 97 </span> : /** Assignment is allowed. The internals are reference counted, -<span class="lineNum"> 98 </span> : * so assignment is cheap. -<span class="lineNum"> 99 </span> : */ -<span class="lineNum"> 100 </span> : void operator=(const Database &other); -<span class="lineNum"> 101 </span> : -<span class="lineNum"> 102 </span> : /** Re-open the database. -<span class="lineNum"> 103 </span> : * This re-opens the database(s) to the latest available version(s). -<span class="lineNum"> 104 </span> : * It can be used either to make sure the latest results are -<span class="lineNum"> 105 </span> : * returned, or to recover from a Xapian::DatabaseModifiedError. -<span class="lineNum"> 106 </span> : */ -<span class="lineNum"> 107 </span> : void reopen(); -<span class="lineNum"> 108 </span> : -<span class="lineNum"> 109 </span> : /// Return a string describing this object. -<span class="lineNum"> 110 </span> : virtual std::string get_description() const; -<span class="lineNum"> 111 </span> : -<span class="lineNum"> 112 </span> : /** An iterator pointing to the start of the postlist -<span class="lineNum"> 113 </span> : * for a given term. -<span class="lineNum"> 114 </span> : * -<span class="lineNum"> 115 </span> : * If the term name is the empty string, the iterator returned -<span class="lineNum"> 116 </span> : * will list all the documents in the database. Such an iterator -<span class="lineNum"> 117 </span> : * will always return a WDF value of 1, since there is no obvious -<span class="lineNum"> 118 </span> : * meaning for this quantity in this case. -<span class="lineNum"> 119 </span> : */ -<span class="lineNum"> 120 </span> : PostingIterator postlist_begin(const std::string &tname) const; -<span class="lineNum"> 121 </span> : -<span class="lineNum"> 122 </span> : /** Corresponding end iterator to postlist_begin(). -<span class="lineNum"> 123 </span> : */ -<span class="lineNum"> 124 </span><span class="lineCov"> 10 : PostingIterator postlist_end(const std::string &) const {</span> -<span class="lineNum"> 125 </span><span class="lineCov"> 10 : return PostingIterator(NULL);</span> -<span class="lineNum"> 126 </span> : } -<span class="lineNum"> 127 </span> : -<span class="lineNum"> 128 </span> : /** An iterator pointing to the start of the termlist -<span class="lineNum"> 129 </span> : * for a given document. -<span class="lineNum"> 130 </span> : */ -<span class="lineNum"> 131 </span> : TermIterator termlist_begin(Xapian::docid did) const; -<span class="lineNum"> 132 </span> : -<span class="lineNum"> 133 </span> : /** Corresponding end iterator to termlist_begin(). -<span class="lineNum"> 134 </span> : */ -<span class="lineNum"> 135 </span> : TermIterator termlist_end(Xapian::docid) const { -<span class="lineNum"> 136 </span> : return TermIterator(NULL); -<span class="lineNum"> 137 </span> : } -<span class="lineNum"> 138 </span> : -<span class="lineNum"> 139 </span> : /** Does this database have any positional information? */ -<span class="lineNum"> 140 </span> : bool has_positions() const; -<span class="lineNum"> 141 </span> : -<span class="lineNum"> 142 </span> : /** An iterator pointing to the start of the position list -<span class="lineNum"> 143 </span> : * for a given term in a given document. -<span class="lineNum"> 144 </span> : */ -<span class="lineNum"> 145 </span> : PositionIterator positionlist_begin(Xapian::docid did, const std::string &tname) const; -<span class="lineNum"> 146 </span> : -<span class="lineNum"> 147 </span> : /** Corresponding end iterator to positionlist_begin(). -<span class="lineNum"> 148 </span> : */ -<span class="lineNum"> 149 </span> : PositionIterator positionlist_end(Xapian::docid, const std::string &) const { -<span class="lineNum"> 150 </span> : return PositionIterator(NULL); -<span class="lineNum"> 151 </span> : } -<span class="lineNum"> 152 </span> : -<span class="lineNum"> 153 </span> : /** An iterator which runs across all terms in the database. -<span class="lineNum"> 154 </span> : */ -<span class="lineNum"> 155 </span> : TermIterator allterms_begin() const; -<span class="lineNum"> 156 </span> : -<span class="lineNum"> 157 </span> : /** Corresponding end iterator to allterms_begin(). -<span class="lineNum"> 158 </span> : */ -<span class="lineNum"> 159 </span> : TermIterator allterms_end() const { -<span class="lineNum"> 160 </span> : return TermIterator(NULL); -<span class="lineNum"> 161 </span> : } -<span class="lineNum"> 162 </span> : -<span class="lineNum"> 163 </span> : /** An iterator which runs across all terms with a given prefix. -<span class="lineNum"> 164 </span> : * -<span class="lineNum"> 165 </span> : * This is functionally similar to getting an iterator with -<span class="lineNum"> 166 </span> : * allterms_begin() and then calling skip_to(prefix) on that iterator -<span class="lineNum"> 167 </span> : * to move to the start of the prefix, but is more convenient (because -<span class="lineNum"> 168 </span> : * it detects the end of the prefixed terms), and may be more -<span class="lineNum"> 169 </span> : * efficient than simply calling skip_to() after opening the iterator, -<span class="lineNum"> 170 </span> : * particularly for network databases. -<span class="lineNum"> 171 </span> : * -<span class="lineNum"> 172 </span> : * @param prefix The prefix to restrict the returned terms to. -<span class="lineNum"> 173 </span> : */ -<span class="lineNum"> 174 </span> : TermIterator allterms_begin(const std::string & prefix) const; -<span class="lineNum"> 175 </span> : -<span class="lineNum"> 176 </span> : /** Corresponding end iterator to allterms_begin(prefix). -<span class="lineNum"> 177 </span> : */ -<span class="lineNum"> 178 </span><span class="lineCov"> 1 : TermIterator allterms_end(const std::string &) const {</span> -<span class="lineNum"> 179 </span><span class="lineCov"> 1 : return TermIterator(NULL);</span> -<span class="lineNum"> 180 </span> : } -<span class="lineNum"> 181 </span> : -<span class="lineNum"> 182 </span> : /// Get the number of documents in the database. -<span class="lineNum"> 183 </span> : Xapian::doccount get_doccount() const; -<span class="lineNum"> 184 </span> : -<span class="lineNum"> 185 </span> : /// Get the highest document id which has been used in the database. -<span class="lineNum"> 186 </span> : Xapian::docid get_lastdocid() const; -<span class="lineNum"> 187 </span> : -<span class="lineNum"> 188 </span> : /// Get the average length of the documents in the database. -<span class="lineNum"> 189 </span> : Xapian::doclength get_avlength() const; -<span class="lineNum"> 190 </span> : -<span class="lineNum"> 191 </span> : /// Get the number of documents in the database indexed by a given term. -<span class="lineNum"> 192 </span> : Xapian::doccount get_termfreq(const std::string & tname) const; -<span class="lineNum"> 193 </span> : -<span class="lineNum"> 194 </span> : /** Check if a given term exists in the database. -<span class="lineNum"> 195 </span> : * -<span class="lineNum"> 196 </span> : * Return true if and only if the term exists in the database. -<span class="lineNum"> 197 </span> : * This is the same as (get_termfreq(tname) != 0), but will often be -<span class="lineNum"> 198 </span> : * more efficient. -<span class="lineNum"> 199 </span> : */ -<span class="lineNum"> 200 </span> : bool term_exists(const std::string & tname) const; -<span class="lineNum"> 201 </span> : -<span class="lineNum"> 202 </span> : /** Return the total number of occurrences of the given term. -<span class="lineNum"> 203 </span> : * -<span class="lineNum"> 204 </span> : * This is the sum of the number of occurrences of the term in each -<span class="lineNum"> 205 </span> : * document it indexes: i.e., the sum of the within document -<span class="lineNum"> 206 </span> : * frequencies of the term. -<span class="lineNum"> 207 </span> : * -<span class="lineNum"> 208 </span> : * @param tname The term whose collection frequency is being -<span class="lineNum"> 209 </span> : * requested. -<span class="lineNum"> 210 </span> : */ -<span class="lineNum"> 211 </span> : Xapian::termcount get_collection_freq(const std::string & tname) const; -<span class="lineNum"> 212 </span> : -<span class="lineNum"> 213 </span> : /** Get the length of a document. -<span class="lineNum"> 214 </span> : */ -<span class="lineNum"> 215 </span> : Xapian::doclength get_doclength(Xapian::docid did) const; -<span class="lineNum"> 216 </span> : -<span class="lineNum"> 217 </span> : /** Send a "keep-alive" to remote databases to stop them timing -<span class="lineNum"> 218 </span> : * out. -<span class="lineNum"> 219 </span> : */ -<span class="lineNum"> 220 </span> : void keep_alive(); -<span class="lineNum"> 221 </span> : -<span class="lineNum"> 222 </span> : /** Get a document from the database, given its document id. -<span class="lineNum"> 223 </span> : * -<span class="lineNum"> 224 </span> : * This method returns a Xapian::Document object which provides the -<span class="lineNum"> 225 </span> : * information about a document. -<span class="lineNum"> 226 </span> : * -<span class="lineNum"> 227 </span> : * @param did The document id for which to retrieve the data. -<span class="lineNum"> 228 </span> : * -<span class="lineNum"> 229 </span> : * @return A Xapian::Document object containing the document data -<span class="lineNum"> 230 </span> : * -<span class="lineNum"> 231 </span> : * @exception Xapian::DocNotFoundError The document specified -<span class="lineNum"> 232 </span> : * could not be found in the database. -<span class="lineNum"> 233 </span> : */ -<span class="lineNum"> 234 </span> : Xapian::Document get_document(Xapian::docid did) const; -<span class="lineNum"> 235 </span> : -<span class="lineNum"> 236 </span> : /** Suggest a spelling correction. -<span class="lineNum"> 237 </span> : * -<span class="lineNum"> 238 </span> : * @param word The potentially misspelled word. -<span class="lineNum"> 239 </span> : * @param max_edit_distance Only consider words which are at most -<span class="lineNum"> 240 </span> : * @a max_edit_distance edits from @a word. An edit is a -<span class="lineNum"> 241 </span> : * character insertion, deletion, or the transposition of two -<span class="lineNum"> 242 </span> : * adjacent characters (default is 2). -<span class="lineNum"> 243 </span> : */ -<span class="lineNum"> 244 </span> : std::string get_spelling_suggestion(const std::string &word, -<span class="lineNum"> 245 </span> : unsigned max_edit_distance = 2) const; -<span class="lineNum"> 246 </span> : -<span class="lineNum"> 247 </span> : /** An iterator which returns all the spelling correction targets. -<span class="lineNum"> 248 </span> : * -<span class="lineNum"> 249 </span> : * This returns all the words which are considered as targets for the -<span class="lineNum"> 250 </span> : * spelling correction algorithm. The frequency of each word is -<span class="lineNum"> 251 </span> : * available as the term frequency of each entry in the returned -<span class="lineNum"> 252 </span> : * iterator. -<span class="lineNum"> 253 </span> : */ -<span class="lineNum"> 254 </span> : Xapian::TermIterator spellings_begin() const; -<span class="lineNum"> 255 </span> : -<span class="lineNum"> 256 </span> : /// Corresponding end iterator to spellings_begin(). -<span class="lineNum"> 257 </span> : Xapian::TermIterator spellings_end() const { -<span class="lineNum"> 258 </span> : return Xapian::TermIterator(NULL); -<span class="lineNum"> 259 </span> : } -<span class="lineNum"> 260 </span> : -<span class="lineNum"> 261 </span> : /** An iterator which returns all the synonyms for a given term. -<span class="lineNum"> 262 </span> : * -<span class="lineNum"> 263 </span> : * @param term The term to return synonyms for. -<span class="lineNum"> 264 </span> : */ -<span class="lineNum"> 265 </span> : Xapian::TermIterator synonyms_begin(const std::string &term) const; -<span class="lineNum"> 266 </span> : -<span class="lineNum"> 267 </span> : /// Corresponding end iterator to synonyms_begin(term). -<span class="lineNum"> 268 </span> : Xapian::TermIterator synonyms_end(const std::string &) const { -<span class="lineNum"> 269 </span> : return Xapian::TermIterator(NULL); -<span class="lineNum"> 270 </span> : } -<span class="lineNum"> 271 </span> : -<span class="lineNum"> 272 </span> : /** An iterator which returns all terms which have synonyms. -<span class="lineNum"> 273 </span> : * -<span class="lineNum"> 274 </span> : * @param prefix If non-empty, only terms with this prefix are -<span class="lineNum"> 275 </span> : * returned. -<span class="lineNum"> 276 </span> : */ -<span class="lineNum"> 277 </span> : Xapian::TermIterator synonym_keys_begin(const std::string &prefix = "") const; -<span class="lineNum"> 278 </span> : -<span class="lineNum"> 279 </span> : /// Corresponding end iterator to synonym_keys_begin(prefix). -<span class="lineNum"> 280 </span> : Xapian::TermIterator synonym_keys_end(const std::string & = "") const { -<span class="lineNum"> 281 </span> : return Xapian::TermIterator(NULL); -<span class="lineNum"> 282 </span> : } -<span class="lineNum"> 283 </span> : -<span class="lineNum"> 284 </span> : /** Get the user-specified metadata associated with a given key. -<span class="lineNum"> 285 </span> : * -<span class="lineNum"> 286 </span> : * User-specified metadata allows you to store arbitrary information -<span class="lineNum"> 287 </span> : * in the form of (key,tag) pairs. See @a -<span class="lineNum"> 288 </span> : * WritableDatabase::set_metadata() for more information. -<span class="lineNum"> 289 </span> : * -<span class="lineNum"> 290 </span> : * When invoked on a Xapian::Database object representing multiple -<span class="lineNum"> 291 </span> : * databases, currently only the metadata for the first is considered -<span class="lineNum"> 292 </span> : * but this behaviour may change in the future. -<span class="lineNum"> 293 </span> : * -<span class="lineNum"> 294 </span> : * If there is no piece of metadata associated with the specified -<span class="lineNum"> 295 </span> : * key, an empty string is returned (this applies even for backends -<span class="lineNum"> 296 </span> : * which don't support metadata). -<span class="lineNum"> 297 </span> : * -<span class="lineNum"> 298 </span> : * Empty keys are not valid, and specifying one will cause an -<span class="lineNum"> 299 </span> : * exception. -<span class="lineNum"> 300 </span> : * -<span class="lineNum"> 301 </span> : * @param key The key of the metadata item to access. -<span class="lineNum"> 302 </span> : * -<span class="lineNum"> 303 </span> : * @return The retrieved metadata item's value. -<span class="lineNum"> 304 </span> : * -<span class="lineNum"> 305 </span> : * @exception Xapian::InvalidArgumentError will be thrown if the -<span class="lineNum"> 306 </span> : * key supplied is empty. -<span class="lineNum"> 307 </span> : * -<span class="lineNum"> 308 </span> : * @exception Xapian::UnimplementedError will be thrown if the -<span class="lineNum"> 309 </span> : * database backend in use doesn't support user-specified -<span class="lineNum"> 310 </span> : * metadata. -<span class="lineNum"> 311 </span> : */ -<span class="lineNum"> 312 </span> : std::string get_metadata(const std::string & key) const; -<span class="lineNum"> 313 </span> : }; -<span class="lineNum"> 314 </span> : -<span class="lineNum"> 315 </span> : /** This class provides read/write access to a database. -<span class="lineNum"> 316 </span> : */ -<span class="lineNum"> 317 </span> : class XAPIAN_VISIBILITY_DEFAULT WritableDatabase : public Database { -<span class="lineNum"> 318 </span> : public: -<span class="lineNum"> 319 </span> : /** Destroy this handle on the database. -<span class="lineNum"> 320 </span> : * -<span class="lineNum"> 321 </span> : * If there are no copies of this object remaining, the database -<span class="lineNum"> 322 </span> : * will be closed. If there are any transactions in progress -<span class="lineNum"> 323 </span> : * these will be aborted as if cancel_transaction had been called. -<span class="lineNum"> 324 </span> : */ -<span class="lineNum"> 325 </span> : virtual ~WritableDatabase(); -<span class="lineNum"> 326 </span> : -<span class="lineNum"> 327 </span> : /** Create an empty WritableDatabase. -<span class="lineNum"> 328 </span> : */ -<span class="lineNum"> 329 </span> : WritableDatabase(); -<span class="lineNum"> 330 </span> : -<span class="lineNum"> 331 </span> : /** Open a database for update, automatically determining the database -<span class="lineNum"> 332 </span> : * backend to use. -<span class="lineNum"> 333 </span> : * -<span class="lineNum"> 334 </span> : * If the database is to be created, Xapian will try -<span class="lineNum"> 335 </span> : * to create the directory indicated by path if it doesn't already -<span class="lineNum"> 336 </span> : * exist (but only the leaf directory, not recursively). -<span class="lineNum"> 337 </span> : * -<span class="lineNum"> 338 </span> : * @param path directory that the database is stored in. -<span class="lineNum"> 339 </span> : * @param action one of: -<span class="lineNum"> 340 </span> : * - Xapian::DB_CREATE_OR_OPEN open for read/write; create if no db -<span class="lineNum"> 341 </span> : * exists -<span class="lineNum"> 342 </span> : * - Xapian::DB_CREATE create new database; fail if db exists -<span class="lineNum"> 343 </span> : * - Xapian::DB_CREATE_OR_OVERWRITE overwrite existing db; create if -<span class="lineNum"> 344 </span> : * none exists -<span class="lineNum"> 345 </span> : * - Xapian::DB_OPEN open for read/write; fail if no db exists -<span class="lineNum"> 346 </span> : */ -<span class="lineNum"> 347 </span> : WritableDatabase(const std::string &path, int action); -<span class="lineNum"> 348 </span> : -<span class="lineNum"> 349 </span> : /** @private @internal Create an WritableDatabase given its internals. -<span class="lineNum"> 350 </span> : */ -<span class="lineNum"> 351 </span> : explicit WritableDatabase(Database::Internal *internal); -<span class="lineNum"> 352 </span> : -<span class="lineNum"> 353 </span> : /** Copying is allowed. The internals are reference counted, so -<span class="lineNum"> 354 </span> : * copying is cheap. -<span class="lineNum"> 355 </span> : */ -<span class="lineNum"> 356 </span> : WritableDatabase(const WritableDatabase &other); -<span class="lineNum"> 357 </span> : -<span class="lineNum"> 358 </span> : /** Assignment is allowed. The internals are reference counted, -<span class="lineNum"> 359 </span> : * so assignment is cheap. -<span class="lineNum"> 360 </span> : * -<span class="lineNum"> 361 </span> : * Note that only an WritableDatabase may be assigned to an -<span class="lineNum"> 362 </span> : * WritableDatabase: an attempt to assign a Database is caught -<span class="lineNum"> 363 </span> : * at compile-time. -<span class="lineNum"> 364 </span> : */ -<span class="lineNum"> 365 </span> : void operator=(const WritableDatabase &other); -<span class="lineNum"> 366 </span> : -<span class="lineNum"> 367 </span> : /** Flush to disk any modifications made to the database. -<span class="lineNum"> 368 </span> : * -<span class="lineNum"> 369 </span> : * For efficiency reasons, when performing multiple updates to a -<span class="lineNum"> 370 </span> : * database it is best (indeed, almost essential) to make as many -<span class="lineNum"> 371 </span> : * modifications as memory will permit in a single pass through -<span class="lineNum"> 372 </span> : * the database. To ensure this, Xapian batches up modifications. -<span class="lineNum"> 373 </span> : * -<span class="lineNum"> 374 </span> : * Flush may be called at any time to -<span class="lineNum"> 375 </span> : * ensure that the modifications which have been made are written to -<span class="lineNum"> 376 </span> : * disk: if the flush succeeds, all the preceding modifications will -<span class="lineNum"> 377 </span> : * have been written to disk. -<span class="lineNum"> 378 </span> : * -<span class="lineNum"> 379 </span> : * If any of the modifications fail, an exception will be thrown and -<span class="lineNum"> 380 </span> : * the database will be left in a state in which each separate -<span class="lineNum"> 381 </span> : * addition, replacement or deletion operation has either been fully -<span class="lineNum"> 382 </span> : * performed or not performed at all: it is then up to the -<span class="lineNum"> 383 </span> : * application to work out which operations need to be repeated. -<span class="lineNum"> 384 </span> : * -<span class="lineNum"> 385 </span> : * It's not valid to call flush within a transaction. -<span class="lineNum"> 386 </span> : * -<span class="lineNum"> 387 </span> : * Beware of calling flush too frequently: this will have a severe -<span class="lineNum"> 388 </span> : * performance cost. -<span class="lineNum"> 389 </span> : * -<span class="lineNum"> 390 </span> : * Note that flush need not be called explicitly: it will be called -<span class="lineNum"> 391 </span> : * automatically when the database is closed, or when a sufficient -<span class="lineNum"> 392 </span> : * number of modifications have been made. -<span class="lineNum"> 393 </span> : * -<span class="lineNum"> 394 </span> : * @exception Xapian::DatabaseError will be thrown if a problem occurs -<span class="lineNum"> 395 </span> : * while modifying the database. -<span class="lineNum"> 396 </span> : * -<span class="lineNum"> 397 </span> : * @exception Xapian::DatabaseCorruptError will be thrown if the -<span class="lineNum"> 398 </span> : * database is in a corrupt state. -<span class="lineNum"> 399 </span> : * -<span class="lineNum"> 400 </span> : * @exception Xapian::DatabaseLockError will be thrown if a lock -<span class="lineNum"> 401 </span> : * couldn't be acquired on the database. -<span class="lineNum"> 402 </span> : */ -<span class="lineNum"> 403 </span> : void flush(); -<span class="lineNum"> 404 </span> : -<span class="lineNum"> 405 </span> : /** Begin a transaction. -<span class="lineNum"> 406 </span> : * -<span class="lineNum"> 407 </span> : * In Xapian a transaction is a group of modifications to the database -<span class="lineNum"> 408 </span> : * which are linked such that either all will be applied -<span class="lineNum"> 409 </span> : * simultaneously or none will be applied at all. Even in the case of -<span class="lineNum"> 410 </span> : * a power failure, this characteristic should be preserved (as long -<span class="lineNum"> 411 </span> : * as the filesystem isn't corrupted, etc). -<span class="lineNum"> 412 </span> : * -<span class="lineNum"> 413 </span> : * A transaction is started with begin_transaction() and can -<span class="lineNum"> 414 </span> : * either be committed by calling commit_transaction() or aborted -<span class="lineNum"> 415 </span> : * by calling cancel_transaction(). -<span class="lineNum"> 416 </span> : * -<span class="lineNum"> 417 </span> : * By default, a transaction implicitly calls flush before and after -<span class="lineNum"> 418 </span> : * so that the modifications stand and fall without affecting -<span class="lineNum"> 419 </span> : * modifications before or after. -<span class="lineNum"> 420 </span> : * -<span class="lineNum"> 421 </span> : * The downside of this flushing is that small transactions cause -<span class="lineNum"> 422 </span> : * modifications to be frequently flushed which can harm indexing -<span class="lineNum"> 423 </span> : * performance in the same way that explicitly calling flush -<span class="lineNum"> 424 </span> : * frequently can. -<span class="lineNum"> 425 </span> : * -<span class="lineNum"> 426 </span> : * If you're applying atomic groups of changes and only wish to -<span class="lineNum"> 427 </span> : * ensure that each group is either applied or not applied, then -<span class="lineNum"> 428 </span> : * you can prevent the automatic flush before and after the -<span class="lineNum"> 429 </span> : * transaction by starting the transaction with -<span class="lineNum"> 430 </span> : * begin_transaction(false). However, if cancel_transaction is -<span class="lineNum"> 431 </span> : * called (or if commit_transaction isn't called before the -<span class="lineNum"> 432 </span> : * WritableDatabase object is destroyed) then any changes which -<span class="lineNum"> 433 </span> : * were pending before the transaction began will also be discarded. -<span class="lineNum"> 434 </span> : * -<span class="lineNum"> 435 </span> : * Transactions aren't currently supported by the InMemory backend. -<span class="lineNum"> 436 </span> : * -<span class="lineNum"> 437 </span> : * @exception Xapian::UnimplementedError will be thrown if transactions -<span class="lineNum"> 438 </span> : * are not available for this database type. -<span class="lineNum"> 439 </span> : * -<span class="lineNum"> 440 </span> : * @exception Xapian::InvalidOperationError will be thrown if this is -<span class="lineNum"> 441 </span> : * called at an invalid time, such as when a transaction -<span class="lineNum"> 442 </span> : * is already in progress. -<span class="lineNum"> 443 </span> : */ -<span class="lineNum"> 444 </span> : void begin_transaction(bool flushed=true); -<span class="lineNum"> 445 </span> : -<span class="lineNum"> 446 </span> : /** Complete the transaction currently in progress. -<span class="lineNum"> 447 </span> : * -<span class="lineNum"> 448 </span> : * If this method completes successfully and this is a flushed -<span class="lineNum"> 449 </span> : * transaction, all the database modifications -<span class="lineNum"> 450 </span> : * made during the transaction will have been committed to the -<span class="lineNum"> 451 </span> : * database. -<span class="lineNum"> 452 </span> : * -<span class="lineNum"> 453 </span> : * If an error occurs, an exception will be thrown, and none of -<span class="lineNum"> 454 </span> : * the modifications made to the database during the transaction -<span class="lineNum"> 455 </span> : * will have been applied to the database. -<span class="lineNum"> 456 </span> : * -<span class="lineNum"> 457 </span> : * In all cases the transaction will no longer be in progress. -<span class="lineNum"> 458 </span> : * -<span class="lineNum"> 459 </span> : * @exception Xapian::DatabaseError will be thrown if a problem occurs -<span class="lineNum"> 460 </span> : * while modifying the database. -<span class="lineNum"> 461 </span> : * -<span class="lineNum"> 462 </span> : * @exception Xapian::DatabaseCorruptError will be thrown if the -<span class="lineNum"> 463 </span> : * database is in a corrupt state. -<span class="lineNum"> 464 </span> : * -<span class="lineNum"> 465 </span> : * @exception Xapian::InvalidOperationError will be thrown if a -<span class="lineNum"> 466 </span> : * transaction is not currently in progress. -<span class="lineNum"> 467 </span> : * -<span class="lineNum"> 468 </span> : * @exception Xapian::UnimplementedError will be thrown if transactions -<span class="lineNum"> 469 </span> : * are not available for this database type. -<span class="lineNum"> 470 </span> : */ -<span class="lineNum"> 471 </span> : void commit_transaction(); -<span class="lineNum"> 472 </span> : -<span class="lineNum"> 473 </span> : /** Abort the transaction currently in progress, discarding the -<span class="lineNum"> 474 </span> : * potential modifications made to the database. -<span class="lineNum"> 475 </span> : * -<span class="lineNum"> 476 </span> : * If an error occurs in this method, an exception will be thrown, -<span class="lineNum"> 477 </span> : * but the transaction will be cancelled anyway. -<span class="lineNum"> 478 </span> : * -<span class="lineNum"> 479 </span> : * @exception Xapian::DatabaseError will be thrown if a problem occurs -<span class="lineNum"> 480 </span> : * while modifying the database. -<span class="lineNum"> 481 </span> : * -<span class="lineNum"> 482 </span> : * @exception Xapian::DatabaseCorruptError will be thrown if the -<span class="lineNum"> 483 </span> : * database is in a corrupt state. -<span class="lineNum"> 484 </span> : * -<span class="lineNum"> 485 </span> : * @exception Xapian::InvalidOperationError will be thrown if a -<span class="lineNum"> 486 </span> : * transaction is not currently in progress. -<span class="lineNum"> 487 </span> : * -<span class="lineNum"> 488 </span> : * @exception Xapian::UnimplementedError will be thrown if transactions -<span class="lineNum"> 489 </span> : * are not available for this database type. -<span class="lineNum"> 490 </span> : */ -<span class="lineNum"> 491 </span> : void cancel_transaction(); -<span class="lineNum"> 492 </span> : -<span class="lineNum"> 493 </span> : /** Add a new document to the database. -<span class="lineNum"> 494 </span> : * -<span class="lineNum"> 495 </span> : * This method adds the specified document to the database, -<span class="lineNum"> 496 </span> : * returning a newly allocated document ID. Automatically allocated -<span class="lineNum"> 497 </span> : * document IDs come from a per-database monotonically increasing -<span class="lineNum"> 498 </span> : * counter, so IDs from deleted documents won't be reused. -<span class="lineNum"> 499 </span> : * -<span class="lineNum"> 500 </span> : * If you want to specify the document ID to be used, you should -<span class="lineNum"> 501 </span> : * call replace_document() instead. -<span class="lineNum"> 502 </span> : * -<span class="lineNum"> 503 </span> : * Note that changes to the database won't be immediately committed to -<span class="lineNum"> 504 </span> : * disk; see flush() for more details. -<span class="lineNum"> 505 </span> : * -<span class="lineNum"> 506 </span> : * As with all database modification operations, the effect is -<span class="lineNum"> 507 </span> : * atomic: the document will either be fully added, or the document -<span class="lineNum"> 508 </span> : * fails to be added and an exception is thrown (possibly at a -<span class="lineNum"> 509 </span> : * later time when flush is called or the database is closed). -<span class="lineNum"> 510 </span> : * -<span class="lineNum"> 511 </span> : * @param document The new document to be added. -<span class="lineNum"> 512 </span> : * -<span class="lineNum"> 513 </span> : * @return The document ID of the newly added document. -<span class="lineNum"> 514 </span> : * -<span class="lineNum"> 515 </span> : * @exception Xapian::DatabaseError will be thrown if a problem occurs -<span class="lineNum"> 516 </span> : * while writing to the database. -<span class="lineNum"> 517 </span> : * -<span class="lineNum"> 518 </span> : * @exception Xapian::DatabaseCorruptError will be thrown if the -<span class="lineNum"> 519 </span> : * database is in a corrupt state. -<span class="lineNum"> 520 </span> : */ -<span class="lineNum"> 521 </span> : Xapian::docid add_document(const Xapian::Document & document); -<span class="lineNum"> 522 </span> : -<span class="lineNum"> 523 </span> : /** Delete a document from the database. -<span class="lineNum"> 524 </span> : * -<span class="lineNum"> 525 </span> : * This method removes the document with the specified document ID -<span class="lineNum"> 526 </span> : * from the database. -<span class="lineNum"> 527 </span> : * -<span class="lineNum"> 528 </span> : * Note that changes to the database won't be immediately committed to -<span class="lineNum"> 529 </span> : * disk; see flush() for more details. -<span class="lineNum"> 530 </span> : * -<span class="lineNum"> 531 </span> : * As with all database modification operations, the effect is -<span class="lineNum"> 532 </span> : * atomic: the document will either be fully removed, or the document -<span class="lineNum"> 533 </span> : * fails to be removed and an exception is thrown (possibly at a -<span class="lineNum"> 534 </span> : * later time when flush is called or the database is closed). -<span class="lineNum"> 535 </span> : * -<span class="lineNum"> 536 </span> : * @param did The document ID of the document to be removed. -<span class="lineNum"> 537 </span> : * -<span class="lineNum"> 538 </span> : * @exception Xapian::DatabaseError will be thrown if a problem occurs -<span class="lineNum"> 539 </span> : * while writing to the database. -<span class="lineNum"> 540 </span> : * -<span class="lineNum"> 541 </span> : * @exception Xapian::DatabaseCorruptError will be thrown if the -<span class="lineNum"> 542 </span> : * database is in a corrupt state. -<span class="lineNum"> 543 </span> : */ -<span class="lineNum"> 544 </span> : void delete_document(Xapian::docid did); -<span class="lineNum"> 545 </span> : -<span class="lineNum"> 546 </span> : /** Delete any documents indexed by a term from the database. -<span class="lineNum"> 547 </span> : * -<span class="lineNum"> 548 </span> : * This method removes any documents indexed by the specified term -<span class="lineNum"> 549 </span> : * from the database. -<span class="lineNum"> 550 </span> : * -<span class="lineNum"> 551 </span> : * A major use is for convenience when UIDs from another system are -<span class="lineNum"> 552 </span> : * mapped to terms in Xapian, although this method has other uses -<span class="lineNum"> 553 </span> : * (for example, you could add a "deletion date" term to documents at -<span class="lineNum"> 554 </span> : * index time and use this method to delete all documents due for -<span class="lineNum"> 555 </span> : * deletion on a particular date). -<span class="lineNum"> 556 </span> : * -<span class="lineNum"> 557 </span> : * @param unique_term The term to remove references to. -<span class="lineNum"> 558 </span> : * -<span class="lineNum"> 559 </span> : * @exception Xapian::DatabaseError will be thrown if a problem occurs -<span class="lineNum"> 560 </span> : * while writing to the database. -<span class="lineNum"> 561 </span> : * -<span class="lineNum"> 562 </span> : * @exception Xapian::DatabaseCorruptError will be thrown if the -<span class="lineNum"> 563 </span> : * database is in a corrupt state. -<span class="lineNum"> 564 </span> : */ -<span class="lineNum"> 565 </span> : void delete_document(const std::string & unique_term); -<span class="lineNum"> 566 </span> : -<span class="lineNum"> 567 </span> : /** Replace a given document in the database. -<span class="lineNum"> 568 </span> : * -<span class="lineNum"> 569 </span> : * This method replaces the document with the specified document ID. -<span class="lineNum"> 570 </span> : * If document ID @a did isn't currently used, the document will be -<span class="lineNum"> 571 </span> : * added with document ID @a did. -<span class="lineNum"> 572 </span> : * -<span class="lineNum"> 573 </span> : * The monotonic counter used for automatically allocating document -<span class="lineNum"> 574 </span> : * IDs is increased so that the next automatically allocated document -<span class="lineNum"> 575 </span> : * ID will be did + 1. Be aware that if you use this method to -<span class="lineNum"> 576 </span> : * specify a high document ID for a new document, and also use -<span class="lineNum"> 577 </span> : * WritableDatabase::add_document(), Xapian may get to a state where -<span class="lineNum"> 578 </span> : * this counter wraps around and will be unable to automatically -<span class="lineNum"> 579 </span> : * allocate document IDs! -<span class="lineNum"> 580 </span> : * -<span class="lineNum"> 581 </span> : * Note that changes to the database won't be immediately committed to -<span class="lineNum"> 582 </span> : * disk; see flush() for more details. -<span class="lineNum"> 583 </span> : * -<span class="lineNum"> 584 </span> : * As with all database modification operations, the effect is -<span class="lineNum"> 585 </span> : * atomic: the document will either be fully replaced, or the document -<span class="lineNum"> 586 </span> : * fails to be replaced and an exception is thrown (possibly at a -<span class="lineNum"> 587 </span> : * later time when flush is called or the database is closed). -<span class="lineNum"> 588 </span> : * -<span class="lineNum"> 589 </span> : * @param did The document ID of the document to be replaced. -<span class="lineNum"> 590 </span> : * @param document The new document. -<span class="lineNum"> 591 </span> : * -<span class="lineNum"> 592 </span> : * @exception Xapian::DatabaseError will be thrown if a problem occurs -<span class="lineNum"> 593 </span> : * while writing to the database. -<span class="lineNum"> 594 </span> : * -<span class="lineNum"> 595 </span> : * @exception Xapian::DatabaseCorruptError will be thrown if the -<span class="lineNum"> 596 </span> : * database is in a corrupt state. -<span class="lineNum"> 597 </span> : */ -<span class="lineNum"> 598 </span> : void replace_document(Xapian::docid did, -<span class="lineNum"> 599 </span> : const Xapian::Document & document); -<span class="lineNum"> 600 </span> : -<span class="lineNum"> 601 </span> : /** Replace any documents matching a term. -<span class="lineNum"> 602 </span> : * -<span class="lineNum"> 603 </span> : * This method replaces any documents indexed by the specified term -<span class="lineNum"> 604 </span> : * with the specified document. If any documents are indexed by the -<span class="lineNum"> 605 </span> : * term, the lowest document ID will be used for the document, -<span class="lineNum"> 606 </span> : * otherwise a new document ID will be generated as for add_document. -<span class="lineNum"> 607 </span> : * -<span class="lineNum"> 608 </span> : * The intended use is to allow UIDs from another system to easily -<span class="lineNum"> 609 </span> : * be mapped to terms in Xapian, although this method probably has -<span class="lineNum"> 610 </span> : * other uses. -<span class="lineNum"> 611 </span> : * -<span class="lineNum"> 612 </span> : * Note that changes to the database won't be immediately committed to -<span class="lineNum"> 613 </span> : * disk; see flush() for more details. -<span class="lineNum"> 614 </span> : * -<span class="lineNum"> 615 </span> : * As with all database modification operations, the effect is -<span class="lineNum"> 616 </span> : * atomic: the document(s) will either be fully replaced, or the -<span class="lineNum"> 617 </span> : * document(s) fail to be replaced and an exception is thrown -<span class="lineNum"> 618 </span> : * (possibly at a -<span class="lineNum"> 619 </span> : * later time when flush is called or the database is closed). -<span class="lineNum"> 620 </span> : * -<span class="lineNum"> 621 </span> : * @param unique_term The "unique" term. -<span class="lineNum"> 622 </span> : * @param document The new document. -<span class="lineNum"> 623 </span> : * -<span class="lineNum"> 624 </span> : * @return The document ID that document was given. -<span class="lineNum"> 625 </span> : * -<span class="lineNum"> 626 </span> : * @exception Xapian::DatabaseError will be thrown if a problem occurs -<span class="lineNum"> 627 </span> : * while writing to the database. -<span class="lineNum"> 628 </span> : * -<span class="lineNum"> 629 </span> : * @exception Xapian::DatabaseCorruptError will be thrown if the -<span class="lineNum"> 630 </span> : * database is in a corrupt state. -<span class="lineNum"> 631 </span> : */ -<span class="lineNum"> 632 </span> : Xapian::docid replace_document(const std::string & unique_term, -<span class="lineNum"> 633 </span> : const Xapian::Document & document); -<span class="lineNum"> 634 </span> : -<span class="lineNum"> 635 </span> : /** Add a word to the spelling dictionary. -<span class="lineNum"> 636 </span> : * -<span class="lineNum"> 637 </span> : * If the word is already present, its frequency is increased. -<span class="lineNum"> 638 </span> : * -<span class="lineNum"> 639 </span> : * @param word The word to add. -<span class="lineNum"> 640 </span> : * @param freqinc How much to increase its frequency by (default 1). -<span class="lineNum"> 641 </span> : */ -<span class="lineNum"> 642 </span> : void add_spelling(const std::string & word, -<span class="lineNum"> 643 </span> : Xapian::termcount freqinc = 1) const; -<span class="lineNum"> 644 </span> : -<span class="lineNum"> 645 </span> : /** Remove a word from the spelling dictionary. -<span class="lineNum"> 646 </span> : * -<span class="lineNum"> 647 </span> : * The word's frequency is decreased, and if would become zero or less -<span class="lineNum"> 648 </span> : * then the word is removed completely. -<span class="lineNum"> 649 </span> : * -<span class="lineNum"> 650 </span> : * @param word The word to remove. -<span class="lineNum"> 651 </span> : * @param freqdec How much to decrease its frequency by (default 1). -<span class="lineNum"> 652 </span> : */ -<span class="lineNum"> 653 </span> : void remove_spelling(const std::string & word, -<span class="lineNum"> 654 </span> : Xapian::termcount freqdec = 1) const; -<span class="lineNum"> 655 </span> : -<span class="lineNum"> 656 </span> : /** Add a synonym for a term. -<span class="lineNum"> 657 </span> : * -<span class="lineNum"> 658 </span> : * If @a synonym is already a synonym for @a term, then no action is -<span class="lineNum"> 659 </span> : * taken. -<span class="lineNum"> 660 </span> : */ -<span class="lineNum"> 661 </span> : void add_synonym(const std::string & term, -<span class="lineNum"> 662 </span> : const std::string & synonym) const; -<span class="lineNum"> 663 </span> : -<span class="lineNum"> 664 </span> : /** Remove a synonym for a term. -<span class="lineNum"> 665 </span> : * -<span class="lineNum"> 666 </span> : * If @a synonym isn't a synonym for @a term, then no action is taken. -<span class="lineNum"> 667 </span> : */ -<span class="lineNum"> 668 </span> : void remove_synonym(const std::string & term, -<span class="lineNum"> 669 </span> : const std::string & synonym) const; -<span class="lineNum"> 670 </span> : -<span class="lineNum"> 671 </span> : /** Remove all synonyms for a term. -<span class="lineNum"> 672 </span> : * -<span class="lineNum"> 673 </span> : * If @a term has no synonyms, no action is taken. -<span class="lineNum"> 674 </span> : */ -<span class="lineNum"> 675 </span> : void clear_synonyms(const std::string & term) const; -<span class="lineNum"> 676 </span> : -<span class="lineNum"> 677 </span> : /** Set the user-specified metadata associated with a given key. -<span class="lineNum"> 678 </span> : * -<span class="lineNum"> 679 </span> : * This method sets the metadata value associated with a given key. -<span class="lineNum"> 680 </span> : * If there is already a metadata value stored in the database with -<span class="lineNum"> 681 </span> : * the same key, the old value is replaced. If you want to delete an -<span class="lineNum"> 682 </span> : * existing item of metadata, just set its value to the empty string. -<span class="lineNum"> 683 </span> : * -<span class="lineNum"> 684 </span> : * User-specified metadata allows you to store arbitrary information -<span class="lineNum"> 685 </span> : * in the form of (key,tag) pairs. -<span class="lineNum"> 686 </span> : * -<span class="lineNum"> 687 </span> : * There's no hard limit on the number of metadata items, or the size -<span class="lineNum"> 688 </span> : * of the metadata values. Metadata keys have a limited length, which -<span class="lineNum"> 689 </span> : * depends on the backend. We recommend limiting them to 200 bytes. -<span class="lineNum"> 690 </span> : * Empty keys are not valid, and specifying one will cause an -<span class="lineNum"> 691 </span> : * exception. -<span class="lineNum"> 692 </span> : * -<span class="lineNum"> 693 </span> : * Metadata modifications are committed to disk in the same way as -<span class="lineNum"> 694 </span> : * modifications to the documents in the database are: i.e., -<span class="lineNum"> 695 </span> : * modifications are atomic, and won't be committed to disk -<span class="lineNum"> 696 </span> : * immediately (see flush() for more details). This allows metadata -<span class="lineNum"> 697 </span> : * to be used to link databases with versioned external resources -<span class="lineNum"> 698 </span> : * by storing the appropriate version number in a metadata item. -<span class="lineNum"> 699 </span> : * -<span class="lineNum"> 700 </span> : * You can also use the metadata to store arbitrary extra information -<span class="lineNum"> 701 </span> : * associated with terms, documents, or postings by encoding the -<span class="lineNum"> 702 </span> : * termname and/or document id into the metadata key. -<span class="lineNum"> 703 </span> : * -<span class="lineNum"> 704 </span> : * @param key The key of the metadata item to set. -<span class="lineNum"> 705 </span> : * -<span class="lineNum"> 706 </span> : * @param value The value of the metadata item to set. -<span class="lineNum"> 707 </span> : * -<span class="lineNum"> 708 </span> : * @exception Xapian::DatabaseError will be thrown if a problem occurs -<span class="lineNum"> 709 </span> : * while writing to the database. -<span class="lineNum"> 710 </span> : * -<span class="lineNum"> 711 </span> : * @exception Xapian::DatabaseCorruptError will be thrown if the -<span class="lineNum"> 712 </span> : * database is in a corrupt state. -<span class="lineNum"> 713 </span> : * -<span class="lineNum"> 714 </span> : * @exception Xapian::InvalidArgumentError will be thrown if the -<span class="lineNum"> 715 </span> : * key supplied is empty. -<span class="lineNum"> 716 </span> : */ -<span class="lineNum"> 717 </span> : void set_metadata(const std::string & key, const std::string & value); -<span class="lineNum"> 718 </span> : -<span class="lineNum"> 719 </span> : /// Return a string describing this object. -<span class="lineNum"> 720 </span> : std::string get_description() const; -<span class="lineNum"> 721 </span> : }; -<span class="lineNum"> 722 </span> : -<span class="lineNum"> 723 </span> : /** Open for read/write; create if no db exists. */ -<span class="lineNum"> 724 </span> : const int DB_CREATE_OR_OPEN = 1; -<span class="lineNum"> 725 </span> : /** Create a new database; fail if db exists. */ -<span class="lineNum"> 726 </span> : const int DB_CREATE = 2; -<span class="lineNum"> 727 </span> : /** Overwrite existing db; create if none exists. */ -<span class="lineNum"> 728 </span> : const int DB_CREATE_OR_OVERWRITE = 3; -<span class="lineNum"> 729 </span> : /** Open for read/write; fail if no db exists. */ -<span class="lineNum"> 730 </span> : const int DB_OPEN = 4; -<span class="lineNum"> 731 </span> : // Can't see any sensible use for this one -<span class="lineNum"> 732 </span> : // const int DB_OVERWRITE = XXX; -<span class="lineNum"> 733 </span> : -<span class="lineNum"> 734 </span> : } -<span class="lineNum"> 735 </span> : -<span class="lineNum"> 736 </span> : #endif /* XAPIAN_INCLUDED_DATABASE_H */ -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> |
