X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=TextStorage.h;h=3da3a1d551b6ba7b51ed46b691a00787a10b4e7c;hb=975bd2cc156043da749bb43b2fcf63d1f30df63e;hp=237bc44698ce36fd31a09fe5492ebdea13af1b1c;hpb=b8470e984146c62910517a2ec762d2ede97c2d96;p=SXSI%2FTextCollection.git diff --git a/TextStorage.h b/TextStorage.h index 237bc44..3da3a1d 100644 --- a/TextStorage.h +++ b/TextStorage.h @@ -35,8 +35,7 @@ public: // Define a shortcut typedef TextCollection::TextPosition TextPosition; // Block size in DeltaVector - const static CSA::usint DV_BLOCK_SIZE = 16; - + const static CSA::usint DV_BLOCK_SIZE = 32; TextStorage(uchar *text, TextPosition n) : n_(n), text_(text), offsets_(0), numberOfTexts_(0) @@ -77,13 +76,23 @@ public: uchar * GetText(TextCollection::DocId docId) { - assert(docId < numberOfTexts_); + assert(docId < (TextCollection::DocId)numberOfTexts_); TextPosition offset = offsets_->select(docId); return &text_[offset]; } + TextCollection::DocId DocIdAtTextPos(TextCollection::TextPosition i) + { + assert(i < n_); + return offsets_->rank(i)-1; + } + TextCollection::TextPosition TextStartPos(TextCollection::DocId i) + { + assert(i < (TextCollection::DocId)numberOfTexts_); + return offsets_->select(i); + } private: void initOffsets()