include/xapian/database.h

Go to the documentation of this file.
00001 
00004 /* Copyright 1999,2000,2001 BrightStation PLC
00005  * Copyright 2002 Ananova Ltd
00006  * Copyright 2002,2003,2004,2005,2006,2007,2008,2009 Olly Betts
00007  * Copyright 2006,2008 Lemur Consulting Ltd
00008  *
00009  * This program is free software; you can redistribute it and/or
00010  * modify it under the terms of the GNU General Public License as
00011  * published by the Free Software Foundation; either version 2 of the
00012  * License, or (at your option) any later version.
00013  *
00014  * This program is distributed in the hope that it will be useful,
00015  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00016  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017  * GNU General Public License for more details.
00018  *
00019  * You should have received a copy of the GNU General Public License
00020  * along with this program; if not, write to the Free Software
00021  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
00022  * USA
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 // Can't see any sensible use for this one
00769 // const int DB_OVERWRITE = XXX;
00770 
00771 }
00772 
00773 #endif /* XAPIAN_INCLUDED_DATABASE_H */

Documentation for Xapian (version 1.0.20).
Generated on 28 Apr 2010 by Doxygen 1.5.2.