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
00039 namespace Xapian {
00040
00041 class Document;
00042
00057 class XAPIAN_VISIBILITY_DEFAULT Database {
00058 public:
00059 class Internal;
00061 std::vector<Xapian::Internal::RefCntPtr<Internal> > internal;
00062
00068 void add_database(const Database & database);
00069
00072 Database();
00073
00079 explicit Database(const std::string &path);
00080
00083 explicit Database(Internal *internal);
00084
00090 virtual ~Database();
00091
00095 Database(const Database &other);
00096
00100 void operator=(const Database &other);
00101
00107 void reopen();
00108
00113 virtual std::string get_description() const;
00114
00123 PostingIterator postlist_begin(const std::string &tname) const;
00124
00127 PostingIterator postlist_end(const std::string &) const {
00128 return PostingIterator(NULL);
00129 }
00130
00134 TermIterator termlist_begin(Xapian::docid did) const;
00135
00138 TermIterator termlist_end(Xapian::docid) const {
00139 return TermIterator(NULL);
00140 }
00141
00143 bool has_positions() const;
00144
00148 PositionIterator positionlist_begin(Xapian::docid did, const std::string &tname) const;
00149
00152 PositionIterator positionlist_end(Xapian::docid, const std::string &) const {
00153 return PositionIterator(NULL);
00154 }
00155
00158 TermIterator allterms_begin() const;
00159
00162 TermIterator allterms_end() const {
00163 return TermIterator(NULL);
00164 }
00165
00177 TermIterator allterms_begin(const std::string & prefix) const;
00178
00181 TermIterator allterms_end(const std::string &) const {
00182 return TermIterator(NULL);
00183 }
00184
00186 Xapian::doccount get_doccount() const;
00187
00189 Xapian::docid get_lastdocid() const;
00190
00192 Xapian::doclength get_avlength() const;
00193
00195 Xapian::doccount get_termfreq(const std::string & tname) const;
00196
00203 bool term_exists(const std::string & tname) const;
00204
00214 Xapian::termcount get_collection_freq(const std::string & tname) const;
00215
00218 Xapian::doclength get_doclength(Xapian::docid did) const;
00219
00223 void keep_alive();
00224
00237 Xapian::Document get_document(Xapian::docid did) const;
00238 };
00239
00242 class XAPIAN_VISIBILITY_DEFAULT WritableDatabase : public Database {
00243 public:
00250 virtual ~WritableDatabase();
00251
00254 WritableDatabase();
00255
00272 WritableDatabase(const std::string &path, int action);
00273
00276 explicit WritableDatabase(Database::Internal *internal);
00277
00281 WritableDatabase(const WritableDatabase &other);
00282
00290 void operator=(const WritableDatabase &other);
00291
00328 void flush();
00329
00369 void begin_transaction(bool flushed=true);
00370
00396 void commit_transaction();
00397
00416 void cancel_transaction();
00417
00446 Xapian::docid add_document(const Xapian::Document & document);
00447
00469 void delete_document(Xapian::docid did);
00470
00488 void delete_document(const std::string & unique_term);
00489
00521 void replace_document(Xapian::docid did,
00522 const Xapian::Document & document);
00523
00555 Xapian::docid replace_document(const std::string & unique_term,
00556 const Xapian::Document & document);
00557
00562 std::string get_description() const;
00563 };
00564
00566 const int DB_CREATE_OR_OPEN = 1;
00568 const int DB_CREATE = 2;
00570 const int DB_CREATE_OR_OVERWRITE = 3;
00572 const int DB_OPEN = 4;
00573
00574
00575
00576 }
00577
00578 #endif