-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapporo_tsubomi_db.h
54 lines (46 loc) · 1.7 KB
/
apporo_tsubomi_db.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#ifndef APPORO_TSUBOMI_DB_H
#define APPORO_TSUBOMI_DB_H
#include "tsubomi_basic_searcher.h"
#include "tsubomi_indexer.h"
#include "tsubomi_mmap.h"
#include <string>
namespace apporo {
namespace storage {
typedef int sa_index;
typedef std::pair<sa_index, sa_index> sa_range;
const int utf8_char_size[] = {
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1
};
class TsubomiDBSearch : public tsubomi::basic_searcher {
public:
TsubomiDBSearch(std::string &filename);
~TsubomiDBSearch();
std::map <int, int> id_cache;
int entry_num;
sa_index getDID(sa_index &num);
sa_index binaryDIDSearch(sa_index &offset, sa_index begin, sa_index end);
protected:
tsubomi::mmap_reader<sa_index> mr_did_;
};
class TsubomiDBWrite : public tsubomi::writer {
public:
TsubomiDBWrite(FILE *fout);
~TsubomiDBWrite();
};
class TsubomiDBIndex : public tsubomi::indexer {
public:
TsubomiDBIndex(std::string &filename);
~TsubomiDBIndex();
void makeDIDIndex(std::string &boundary);
void mkary_make(std::vector<sa_index> &sa, const char *seps, bool is_utf8);
};
}
}
#endif