Added queries for DocId intervals
[SXSI/TextCollection.git] / CSA.h
diff --git a/CSA.h b/CSA.h
index be9a2f9..eab3637 100644 (file)
--- a/CSA.h
+++ b/CSA.h
@@ -82,22 +82,41 @@ public:
     bool IsContains(uchar const *) const;
     bool IsLessThan(uchar const *) const;
 
+    bool IsPrefix(uchar const *, DocId, DocId) const;
+    bool IsSuffix(uchar const *, DocId, DocId) const;
+    bool IsEqual(uchar const *, DocId, DocId) const;
+    bool IsContains(uchar const *, DocId, DocId) const;
+    bool IsLessThan(uchar const *, DocId, DocId) const;
+
     ulong Count(uchar const *) const;
     unsigned CountPrefix(uchar const *) const;
     unsigned CountSuffix(uchar const *) const;
     unsigned CountEqual(uchar const *) const;
     unsigned CountContains(uchar const *) const;
     unsigned CountLessThan(const unsigned char*) const;
+
+    unsigned CountPrefix(uchar const *, DocId, DocId) const;
+    unsigned CountSuffix(uchar const *, DocId, DocId) const;
+    unsigned CountEqual(uchar const *, DocId, DocId) const;
+    unsigned CountContains(uchar const *, DocId, DocId) const;
+    unsigned CountLessThan(uchar const *, DocId, DocId) const;
     
-    // document_result is inherited from SXSI::TextCollection.
+    // Definition of document_result is inherited from SXSI::TextCollection.
     document_result Prefix(uchar const *) const;
     document_result Suffix(uchar const *) const;
     document_result Equal(uchar const *) const;
     document_result Contains(uchar const *) const;
     document_result LessThan(uchar const *) const;
 
-    // full_result is inherited from SXSI::TextCollection.
+    document_result Prefix(uchar const *, DocId, DocId) const;
+    document_result Suffix(uchar const *, DocId, DocId) const;
+    document_result Equal(uchar const *, DocId, DocId) const;
+    document_result Contains(uchar const *, DocId, DocId) const;
+    document_result LessThan(uchar const *, DocId, DocId) const;
+
+    // Definition of full_result is inherited from SXSI::TextCollection.
     full_result FullContains(uchar const *) const;
+    full_result FullContains(uchar const *, DocId, DocId) const;
 
     // Index from/to disk
     void Load(FILE *, unsigned);
@@ -303,6 +322,7 @@ private:
     void maketables();
     DocId DocIdAtTextPos(BlockArray*, TextPosition) const;
     ulong Search(uchar const *, TextPosition, TextPosition *, TextPosition *) const;
+    ulong Search(uchar const *, TextPosition, TextPosition *, TextPosition *, DocId, DocId) const;
     ulong SearchLessThan(uchar const *, TextPosition, TextPosition *, TextPosition *) const;
 //    TextPosition Inverse(TextPosition) const;
 //    TextPosition LF(uchar c, TextPosition &sp, TextPosition &ep) const;
@@ -324,6 +344,7 @@ private:
     
         return alphabetrank->rank(0, ep) - ranksp;
     }
+    unsigned CountEndmarkers(TextPosition, TextPosition, DocId, DocId) const;
 }; // class CSA
 
 } // namespace SXSI