Approx pattern matching functions
authornvalimak <nvalimak@3cdefd35-fc62-479d-8e8d-bae585ffb9ca>
Fri, 29 May 2009 14:40:05 +0000 (14:40 +0000)
committernvalimak <nvalimak@3cdefd35-fc62-479d-8e8d-bae585ffb9ca>
Fri, 29 May 2009 14:40:05 +0000 (14:40 +0000)
git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/XMLTree@422 3cdefd35-fc62-479d-8e8d-bae585ffb9ca

XMLTree.h

index 275b9bc..ee44d32 100644 (file)
--- a/XMLTree.h
+++ b/XMLTree.h
@@ -40,7 +40,7 @@
 #include <static_sequence.h>\r
 using SXSI::TextCollection;\r
 using SXSI::TextCollectionBuilder;\r
-\r
+using SXSI::TextStorage;\r
 \r
 // this constant is used to efficiently compute the child operation in the tree\r
 #define OPTD 10\r
@@ -325,6 +325,20 @@ public:
    TextCollection::document_result LessThan(uchar const *s) {\r
       return Text->LessThan(s);\r
    }\r
+\r
+   /** KMismatches (s): returns document identifiers for the texts that\r
+    * contain occurrence of string s with at most K mismatches. */\r
+   TextCollection::document_result KMismatches(uchar const *s, unsigned K) {\r
+       return Text->KMismatches(s, K);\r
+   }\r
+\r
+   /** KErrors (s): returns document identifiers for the texts that\r
+    * contain occurrence of string s with at most K errors. \r
+    * The accepted "errors" are insertions, deletions and mutations of chars.\r
+    */\r
+   TextCollection::document_result KErrors(uchar const *s, unsigned K) {\r
+       return Text->KErrors(s, K);\r
+   }\r
    \r
    /** IsPrefix(x): returns true if there is a text prefixed by string s. */\r
    bool IsPrefix(uchar const *s) {\r
@@ -385,18 +399,34 @@ public:
    }\r
    \r
    /** GetText(d): returns the text corresponding to document with\r
-    * id d. */\r
-   uchar* GetText(DocID d) {\r
-     uchar * s = Text->GetText(d);\r
-     return (s[0] == 1 ? (uchar*)"" : s);\r
+    * id d. \r
+    *\r
+    * Implementation of GetText() may or may NOT \r
+    * require you to free() the pointer that is returned.\r
+    * Call DeleteText() for each pointer returned by GetText()\r
+    * to avoid possible memory leaks.\r
+    */\r
+   uchar* GetText(DocID d) const {\r
+     return Text->GetText(d);\r
+   }\r
+\r
+   /**\r
+    * Free the pointer returned by GetText().\r
+    */\r
+   void DeleteText(uchar *text) const {\r
+       Text->DeleteText(text);\r
    }\r
 \r
    /** GetText(i, j): returns the texts corresponding to documents with\r
-    * ids i, i+1, ..., j. Texts are separated by '\0' character.  */\r
-   //   uchar* GetText(DocID i, DocID j) {\r
-   //  uchar * s = Text->GetText(i, j);\r
-   // return (s[0] == 1 ? (uchar*)"" : s);\r
-   //}\r
+    * ids i, i+1, ..., j. Texts are separated by '\0' character.  \r
+    *\r
+    * Call DeleteText() for each pointer returned by GetText()\r
+    * to avoid possible memory leaks.\r
+    */\r
+   uchar* GetText(DocID i, DocID j) const {\r
+     return Text->GetText(i, j);\r
+   }\r
+\r
 \r
    TextCollection *getTextCollection() {\r
       return Text;\r