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/document.h>
00033 #include <xapian/types.h>
00034 #include <xapian/positioniterator.h>
00035 #include <xapian/postingiterator.h>
00036 #include <xapian/termiterator.h>
00037 #include <xapian/valueiterator.h>
00038 #include <xapian/visibility.h>
00039 
00041 namespace Xapian {
00042 
00057 class XAPIAN_VISIBILITY_DEFAULT Database {
00058     public:
00059         class Internal;
00061         std::vector<Xapian::Internal::RefCntPtr<Internal> > internal;
00062 
00078         Document::Internal * get_document_lazily(Xapian::docid did) const;
00079 
00085         void add_database(const Database & database);
00086 
00089         Database();
00090 
00096         explicit Database(const std::string &path);
00097 
00100         explicit Database(Internal *internal);
00101 
00107         virtual ~Database();
00108 
00112         Database(const Database &other);
00113 
00117         void operator=(const Database &other);
00118 
00128         void reopen();
00129 
00157         virtual void close();
00158 
00160         virtual std::string get_description() const;
00161 
00170         PostingIterator postlist_begin(const std::string &tname) const;
00171 
00174         PostingIterator postlist_end(const std::string &) const {
00175             return PostingIterator(NULL);
00176         }
00177 
00181         TermIterator termlist_begin(Xapian::docid did) const;
00182 
00185         TermIterator termlist_end(Xapian::docid) const {
00186             return TermIterator(NULL);
00187         }
00188 
00190         bool has_positions() const;
00191 
00195         PositionIterator positionlist_begin(Xapian::docid did, const std::string &tname) const;
00196 
00199         PositionIterator positionlist_end(Xapian::docid, const std::string &) const {
00200             return PositionIterator(NULL);
00201         }
00202 
00205         TermIterator allterms_begin() const;
00206 
00209         TermIterator allterms_end() const {
00210             return TermIterator(NULL);
00211         }
00212 
00224         TermIterator allterms_begin(const std::string & prefix) const;
00225 
00228         TermIterator allterms_end(const std::string &) const {
00229             return TermIterator(NULL);
00230         }
00231 
00233         Xapian::doccount get_doccount() const;
00234 
00236         Xapian::docid get_lastdocid() const;
00237 
00239         Xapian::doclength get_avlength() const;
00240 
00242         Xapian::doccount get_termfreq(const std::string & tname) const;
00243 
00250         bool term_exists(const std::string & tname) const;
00251 
00261         Xapian::termcount get_collection_freq(const std::string & tname) const;
00262 
00273         Xapian::doccount get_value_freq(Xapian::valueno valno) const;
00274 
00285         std::string get_value_lower_bound(Xapian::valueno valno) const;
00286 
00297         std::string get_value_upper_bound(Xapian::valueno valno) const;
00298 
00303         Xapian::termcount get_doclength_lower_bound() const;
00304 
00306         Xapian::termcount get_doclength_upper_bound() const;
00307 
00309         Xapian::termcount get_wdf_upper_bound(const std::string & term) const;
00310 
00312         ValueIterator valuestream_begin(Xapian::valueno slot) const;
00313 
00315         ValueIteratorEnd_ valuestream_end(Xapian::valueno) const {
00316             return ValueIteratorEnd_();
00317         }
00318 
00320         Xapian::termcount get_doclength(Xapian::docid did) const;
00321 
00326         void keep_alive();
00327 
00340         Xapian::Document get_document(Xapian::docid did) const;
00341 
00350         std::string get_spelling_suggestion(const std::string &word,
00351                                             unsigned max_edit_distance = 2) const;
00352 
00360         Xapian::TermIterator spellings_begin() const;
00361 
00363         Xapian::TermIterator spellings_end() const {
00364             return Xapian::TermIterator(NULL);
00365         }
00366 
00371         Xapian::TermIterator synonyms_begin(const std::string &term) const;
00372 
00374         Xapian::TermIterator synonyms_end(const std::string &) const {
00375             return Xapian::TermIterator(NULL);
00376         }
00377 
00383         Xapian::TermIterator synonym_keys_begin(const std::string &prefix = std::string()) const;
00384 
00386         Xapian::TermIterator synonym_keys_end(const std::string & = std::string()) const {
00387             return Xapian::TermIterator(NULL);
00388         }
00389 
00414         std::string get_metadata(const std::string & key) const;
00415 
00434         Xapian::TermIterator metadata_keys_begin(const std::string &prefix = std::string()) const;
00435 
00437         Xapian::TermIterator metadata_keys_end(const std::string & = std::string()) const {
00438             return Xapian::TermIterator(NULL);
00439         }
00440 
00455         std::string get_uuid() const;
00456 };
00457 
00460 class XAPIAN_VISIBILITY_DEFAULT WritableDatabase : public Database {
00461     public:
00468         virtual ~WritableDatabase();
00469 
00472         WritableDatabase();
00473 
00496         WritableDatabase(const std::string &path, int action);
00497 
00500         explicit WritableDatabase(Database::Internal *internal);
00501 
00505         WritableDatabase(const WritableDatabase &other);
00506 
00514         void operator=(const WritableDatabase &other);
00515 
00551         void commit();
00552 
00558         void flush() { commit(); }
00559 
00598         void begin_transaction(bool flushed=true);
00599 
00625         void commit_transaction();
00626 
00645         void cancel_transaction();
00646 
00675         Xapian::docid add_document(const Xapian::Document & document);
00676 
00698         void delete_document(Xapian::docid did);
00699 
00719         void delete_document(const std::string & unique_term);
00720 
00752         void replace_document(Xapian::docid did,
00753                               const Xapian::Document & document);
00754 
00786         Xapian::docid replace_document(const std::string & unique_term,
00787                                        const Xapian::Document & document);
00788 
00796         void add_spelling(const std::string & word,
00797                           Xapian::termcount freqinc = 1) const;
00798 
00807         void remove_spelling(const std::string & word,
00808                              Xapian::termcount freqdec = 1) const;
00809 
00815         void add_synonym(const std::string & term,
00816                          const std::string & synonym) const;
00817 
00822         void remove_synonym(const std::string & term,
00823                             const std::string & synonym) const;
00824 
00829         void clear_synonyms(const std::string & term) const;
00830 
00875         void set_metadata(const std::string & key, const std::string & value);
00876 
00878         std::string get_description() const;
00879 };
00880 
00882 const int DB_CREATE_OR_OPEN = 1;
00884 const int DB_CREATE = 2;
00886 const int DB_CREATE_OR_OVERWRITE = 3;
00888 const int DB_OPEN = 4;
00889 // Can't see any sensible use for this one
00890 // const int DB_OVERWRITE = XXX;
00891 
00892 }
00893 
00894 #endif /* XAPIAN_INCLUDED_DATABASE_H */

Documentation for Xapian (version 1.1.2).
Generated on 23 Jul 2009 by Doxygen 1.5.2.