00001
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef XAPIAN_INCLUDED_DATABASE_H
00026 #define XAPIAN_INCLUDED_DATABASE_H
00027
00028 #include <string>
00029 #include <vector>
00030
00031 #include <xapian/base.h>
00032 #include <xapian/types.h>
00033 #include <xapian/positioniterator.h>
00034 #include <xapian/postingiterator.h>
00035 #include <xapian/termiterator.h>
00036 #include <xapian/visibility.h>
00037
00038 namespace Xapian {
00039
00040 class Document;
00041
00056 class XAPIAN_VISIBILITY_DEFAULT Database {
00057 public:
00058 class Internal;
00060 std::vector<Xapian::Internal::RefCntPtr<Internal> > internal;
00061
00067 void add_database(const Database & database);
00068
00071 Database();
00072
00078 explicit Database(const std::string &path);
00079
00082 explicit Database(Internal *internal);
00083
00089 virtual ~Database();
00090
00094 Database(const Database &other);
00095
00099 void operator=(const Database &other);
00100
00106 void reopen();
00107
00109 virtual std::string get_description() const;
00110
00119 PostingIterator postlist_begin(const std::string &tname) const;
00120
00123 PostingIterator postlist_end(const std::string &) const {
00124 return PostingIterator(NULL);
00125 }
00126
00130 TermIterator termlist_begin(Xapian::docid did) const;
00131
00134 TermIterator termlist_end(Xapian::docid) const {
00135 return TermIterator(NULL);
00136 }
00137
00139 bool has_positions() const;
00140
00144 PositionIterator positionlist_begin(Xapian::docid did, const std::string &tname) const;
00145
00148 PositionIterator positionlist_end(Xapian::docid, const std::string &) const {
00149 return PositionIterator(NULL);
00150 }
00151
00154 TermIterator allterms_begin() const;
00155
00158 TermIterator allterms_end() const {
00159 return TermIterator(NULL);
00160 }
00161
00173 TermIterator allterms_begin(const std::string & prefix) const;
00174
00177 TermIterator allterms_end(const std::string &) const {
00178 return TermIterator(NULL);
00179 }
00180
00182 Xapian::doccount get_doccount() const;
00183
00185 Xapian::docid get_lastdocid() const;
00186
00188 Xapian::doclength get_avlength() const;
00189
00191 Xapian::doccount get_termfreq(const std::string & tname) const;
00192
00199 bool term_exists(const std::string & tname) const;
00200
00210 Xapian::termcount get_collection_freq(const std::string & tname) const;
00211
00214 Xapian::doclength get_doclength(Xapian::docid did) const;
00215
00219 void keep_alive();
00220
00233 Xapian::Document get_document(Xapian::docid did) const;
00234
00243 std::string get_spelling_suggestion(const std::string &word,
00244 unsigned max_edit_distance = 2) const;
00245
00253 Xapian::TermIterator spellings_begin() const;
00254
00256 Xapian::TermIterator spellings_end() const {
00257 return Xapian::TermIterator(NULL);
00258 }
00259
00264 Xapian::TermIterator synonyms_begin(const std::string &term) const;
00265
00267 Xapian::TermIterator synonyms_end(const std::string &) const {
00268 return Xapian::TermIterator(NULL);
00269 }
00270
00276 Xapian::TermIterator synonym_keys_begin(const std::string &prefix = "") const;
00277
00279 Xapian::TermIterator synonym_keys_end(const std::string & = "") const {
00280 return Xapian::TermIterator(NULL);
00281 }
00282
00307 std::string get_metadata(const std::string & key) const;
00308
00327 Xapian::TermIterator metadata_keys_begin(const std::string &prefix = "") const;
00328
00330 Xapian::TermIterator metadata_keys_end(const std::string & = "") const {
00331 return Xapian::TermIterator(NULL);
00332 }
00333 };
00334
00337 class XAPIAN_VISIBILITY_DEFAULT WritableDatabase : public Database {
00338 public:
00345 virtual ~WritableDatabase();
00346
00349 WritableDatabase();
00350
00373 WritableDatabase(const std::string &path, int action);
00374
00377 explicit WritableDatabase(Database::Internal *internal);
00378
00382 WritableDatabase(const WritableDatabase &other);
00383
00391 void operator=(const WritableDatabase &other);
00392
00430 void flush();
00431
00470 void begin_transaction(bool flushed=true);
00471
00497 void commit_transaction();
00498
00517 void cancel_transaction();
00518
00547 Xapian::docid add_document(const Xapian::Document & document);
00548
00570 void delete_document(Xapian::docid did);
00571
00591 void delete_document(const std::string & unique_term);
00592
00624 void replace_document(Xapian::docid did,
00625 const Xapian::Document & document);
00626
00665 Xapian::docid replace_document(const std::string & unique_term,
00666 const Xapian::Document & document);
00667
00675 void add_spelling(const std::string & word,
00676 Xapian::termcount freqinc = 1) const;
00677
00686 void remove_spelling(const std::string & word,
00687 Xapian::termcount freqdec = 1) const;
00688
00694 void add_synonym(const std::string & term,
00695 const std::string & synonym) const;
00696
00701 void remove_synonym(const std::string & term,
00702 const std::string & synonym) const;
00703
00708 void clear_synonyms(const std::string & term) const;
00709
00754 void set_metadata(const std::string & key, const std::string & value);
00755
00757 std::string get_description() const;
00758 };
00759
00761 const int DB_CREATE_OR_OPEN = 1;
00763 const int DB_CREATE = 2;
00765 const int DB_CREATE_OR_OVERWRITE = 3;
00767 const int DB_OPEN = 4;
00768
00769
00770
00771 }
00772
00773 #endif