Fixed division by zero
[SXSI/TextCollection.git] / TextCollection.h
index 6a4eb1c..f41084d 100644 (file)
@@ -105,13 +105,13 @@ namespace SXSI
          *
          * Note: Parameters i and j are text positions inside the k'th text.
          */
-        virtual uchar* GetText(DocId, TextPosition, TextPosition) const = 0;
+//        virtual uchar* GetText(DocId, TextPosition, TextPosition) const = 0;
         /**
          * Returns backwards (reverse) iterator to the end of i'th text
          * 
          * Note: Do we need this?
          * Forward iterator would be really in-efficient compared to
-         * getText(k) and getText(k, i, j).
+         * getText(k).
          *
          * TODO Define and implement const_reverse_iterator.
          */
@@ -132,8 +132,21 @@ namespace SXSI
         virtual bool IsLessThan(uchar const *) const = 0;
 
         /**
-         * Counting queries 
-         * 
+         * Existential queries for given DocId interval.
+         */
+        virtual bool IsPrefix(uchar const *, DocId, DocId) const = 0;
+        virtual bool IsSuffix(uchar const *, DocId, DocId) const = 0;
+        virtual bool IsEqual(uchar const *, DocId, DocId) const = 0;
+        virtual bool IsContains(uchar const *, DocId, DocId) const = 0;
+        virtual bool IsLessThan(uchar const *, DocId, DocId) const = 0;
+
+        /**
+         * Counting queries
+         * Result is the number of occurrences.
+         */
+        virtual ulong Count(uchar const *) const = 0;
+        /**
+         * More counting queries
          * Result is the number of documents.
          */
         virtual unsigned CountPrefix(uchar const *) const = 0;
@@ -142,6 +155,15 @@ namespace SXSI
         virtual unsigned CountContains(uchar const *) const = 0;
         virtual unsigned CountLessThan(uchar const *) const = 0;
 
+        /**
+         * Counting queries for given DocId interval
+         */
+        virtual unsigned CountPrefix(uchar const *, DocId, DocId) const = 0;
+        virtual unsigned CountSuffix(uchar const *, DocId, DocId) const = 0;
+        virtual unsigned CountEqual(uchar const *, DocId, DocId) const = 0;
+        virtual unsigned CountContains(uchar const *, DocId, DocId) const = 0;
+        virtual unsigned CountLessThan(uchar const *, DocId, DocId) const = 0;
+
         /**
          * Document reporting queries
          *
@@ -155,6 +177,15 @@ namespace SXSI
         virtual document_result Contains(uchar const *) const = 0;
         virtual document_result LessThan(uchar const *) const = 0;
 
+        /**
+         * Document reporting queries for given DocId interval.
+         */
+        virtual document_result Prefix(uchar const *, DocId, DocId) const = 0;
+        virtual document_result Suffix(uchar const *, DocId, DocId) const = 0;
+        virtual document_result Equal(uchar const *, DocId, DocId) const = 0;
+        virtual document_result Contains(uchar const *, DocId, DocId) const = 0;
+        virtual document_result LessThan(uchar const *, DocId, DocId) const = 0;
+
         /**
          * Full reporting queries
          *
@@ -163,6 +194,8 @@ namespace SXSI
         // Data type for results
         typedef std::vector<std::pair<DocId, TextPosition> > full_result;
         virtual full_result FullContains(uchar const *) const = 0;
+        // Full reporting query for given DocId interval
+        virtual full_result FullContains(uchar const *, DocId, DocId) const = 0;
 
     protected:
         // Protected constructor; call the static function InitTextCollection().