isomorfeus-ferret 0.14.3 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +56 -6
- data/ext/isomorfeus_ferret_ext/extconf.rb +19 -1
- data/ext/isomorfeus_ferret_ext/frb_analysis.c +0 -4
- data/ext/isomorfeus_ferret_ext/frb_field_info.c +65 -55
- data/ext/isomorfeus_ferret_ext/frb_index.c +21 -23
- data/ext/isomorfeus_ferret_ext/frb_lazy_doc.c +4 -0
- data/ext/isomorfeus_ferret_ext/frb_qparser.c +1 -6
- data/ext/isomorfeus_ferret_ext/frb_search.c +0 -5
- data/ext/isomorfeus_ferret_ext/frb_store.c +66 -4
- data/ext/isomorfeus_ferret_ext/frb_utils.c +0 -4
- data/ext/isomorfeus_ferret_ext/frt_compound_io.c +4 -4
- data/ext/isomorfeus_ferret_ext/frt_except.c +11 -11
- data/ext/isomorfeus_ferret_ext/frt_fs_store.c +62 -88
- data/ext/isomorfeus_ferret_ext/frt_hash.c +32 -70
- data/ext/isomorfeus_ferret_ext/frt_ind.c +21 -21
- data/ext/isomorfeus_ferret_ext/frt_ind.h +1 -1
- data/ext/isomorfeus_ferret_ext/frt_index.c +144 -223
- data/ext/isomorfeus_ferret_ext/frt_index.h +35 -58
- data/ext/isomorfeus_ferret_ext/frt_mdbx_store.c +691 -0
- data/ext/isomorfeus_ferret_ext/frt_q_parser.c +4 -4
- data/ext/isomorfeus_ferret_ext/frt_q_span.c +2 -2
- data/ext/isomorfeus_ferret_ext/frt_ram_store.c +9 -9
- data/ext/isomorfeus_ferret_ext/frt_search.c +0 -3
- data/ext/isomorfeus_ferret_ext/frt_search.h +1 -1
- data/ext/isomorfeus_ferret_ext/frt_sort.c +2 -2
- data/ext/isomorfeus_ferret_ext/frt_store.c +6 -8
- data/ext/isomorfeus_ferret_ext/frt_store.h +43 -21
- data/ext/isomorfeus_ferret_ext/frt_threading.h +0 -16
- data/ext/isomorfeus_ferret_ext/isomorfeus_ferret.c +0 -9
- data/ext/isomorfeus_ferret_ext/mdbx.c +33632 -0
- data/ext/isomorfeus_ferret_ext/mdbx.h +5495 -0
- data/ext/isomorfeus_ferret_ext/test.c +20 -18
- data/ext/isomorfeus_ferret_ext/test_1710.c +1 -1
- data/ext/isomorfeus_ferret_ext/test_fields.c +39 -39
- data/ext/isomorfeus_ferret_ext/test_file_deleter.c +1 -1
- data/ext/isomorfeus_ferret_ext/test_filter.c +1 -1
- data/ext/isomorfeus_ferret_ext/test_highlighter.c +1 -2
- data/ext/isomorfeus_ferret_ext/test_index.c +36 -36
- data/ext/isomorfeus_ferret_ext/test_mdbx_store.c +19 -0
- data/ext/isomorfeus_ferret_ext/test_q_fuzzy.c +2 -2
- data/ext/isomorfeus_ferret_ext/test_q_span.c +1 -1
- data/ext/isomorfeus_ferret_ext/test_search.c +4 -4
- data/ext/isomorfeus_ferret_ext/test_segments.c +1 -4
- data/ext/isomorfeus_ferret_ext/test_sort.c +2 -2
- data/ext/isomorfeus_ferret_ext/test_store.c +4 -8
- data/ext/isomorfeus_ferret_ext/test_term_vectors.c +6 -6
- data/ext/isomorfeus_ferret_ext/test_threading.c +4 -4
- data/ext/isomorfeus_ferret_ext/tests_all.h +2 -0
- data/lib/isomorfeus/ferret/version.rb +1 -1
- metadata +9 -5
@@ -62,27 +62,7 @@ extern FrtHash *frt_co_hash_create();
|
|
62
62
|
*
|
63
63
|
****************************************************************************/
|
64
64
|
|
65
|
-
|
66
|
-
FRT_STORE_NO = 0,
|
67
|
-
FRT_STORE_YES = 1,
|
68
|
-
} FrtStoreValue;
|
69
|
-
|
70
|
-
typedef enum {
|
71
|
-
FRT_INDEX_NO = 0,
|
72
|
-
FRT_INDEX_UNTOKENIZED = 1,
|
73
|
-
FRT_INDEX_YES = 3,
|
74
|
-
FRT_INDEX_UNTOKENIZED_OMIT_NORMS = 5,
|
75
|
-
FRT_INDEX_YES_OMIT_NORMS = 7
|
76
|
-
} FrtIndexValue;
|
77
|
-
|
78
|
-
typedef enum {
|
79
|
-
FRT_TERM_VECTOR_NO = 0,
|
80
|
-
FRT_TERM_VECTOR_YES = 1,
|
81
|
-
FRT_TERM_VECTOR_WITH_POSITIONS = 3,
|
82
|
-
FRT_TERM_VECTOR_WITH_OFFSETS = 5,
|
83
|
-
FRT_TERM_VECTOR_WITH_POSITIONS_OFFSETS = 7
|
84
|
-
} FrtTermVectorValue;
|
85
|
-
|
65
|
+
#define FRT_FI_DEFAULTS_BM FRT_FI_IS_STORED_BM | FRT_FI_IS_INDEXED_BM | FRT_FI_IS_TOKENIZED_BM | FRT_FI_STORE_TERM_VECTOR_BM | FRT_FI_STORE_POSITIONS_BM | FRT_FI_STORE_OFFSETS_BM
|
86
66
|
#define FRT_FI_IS_STORED_BM 0x001
|
87
67
|
#define FRT_FI_IS_COMPRESSED_BM 0x002
|
88
68
|
#define FRT_FI_IS_INDEXED_BM 0x004
|
@@ -105,24 +85,24 @@ typedef struct FrtFieldInfo {
|
|
105
85
|
} FrtFieldInfo;
|
106
86
|
|
107
87
|
extern FrtFieldInfo *frt_fi_alloc();
|
108
|
-
extern FrtFieldInfo *frt_fi_init(FrtFieldInfo *fi, ID name,
|
109
|
-
extern FrtFieldInfo *frt_fi_new(ID name,
|
88
|
+
extern FrtFieldInfo *frt_fi_init(FrtFieldInfo *fi, ID name, unsigned int bits);
|
89
|
+
extern FrtFieldInfo *frt_fi_new(ID name, unsigned int bits);
|
110
90
|
extern char *frt_fi_to_s(FrtFieldInfo *fi);
|
111
91
|
extern void frt_fi_deref(FrtFieldInfo *fi);
|
112
92
|
|
113
|
-
#define
|
114
|
-
#define
|
115
|
-
#define
|
116
|
-
#define
|
117
|
-
#define
|
118
|
-
#define
|
119
|
-
#define
|
120
|
-
#define
|
121
|
-
#define
|
122
|
-
#define
|
123
|
-
#define
|
124
|
-
#define
|
125
|
-
((
|
93
|
+
#define bits_is_stored(bits) ((bits & FRT_FI_IS_STORED_BM) != 0)
|
94
|
+
#define bits_is_compressed(bits) ((bits & FRT_FI_IS_COMPRESSED_BM) != 0)
|
95
|
+
#define bits_is_compressed_brotli(bits) ((bits & FRT_FI_COMPRESSION_BROTLI_BM) != 0)
|
96
|
+
#define bits_is_compressed_bz2(bits) ((bits & FRT_FI_COMPRESSION_BZ2_BM) != 0)
|
97
|
+
#define bits_is_compressed_lz4(bits) ((bits & FRT_FI_COMPRESSION_LZ4_BM) != 0)
|
98
|
+
#define bits_is_indexed(bits) ((bits & FRT_FI_IS_INDEXED_BM) != 0)
|
99
|
+
#define bits_is_tokenized(bits) ((bits & FRT_FI_IS_TOKENIZED_BM) != 0)
|
100
|
+
#define bits_omit_norms(bits) ((bits & FRT_FI_OMIT_NORMS_BM) != 0)
|
101
|
+
#define bits_store_term_vector(bits) ((bits & FRT_FI_STORE_TERM_VECTOR_BM) != 0)
|
102
|
+
#define bits_store_positions(bits) ((bits & FRT_FI_STORE_POSITIONS_BM) != 0)
|
103
|
+
#define bits_store_offsets(bits) ((bits & FRT_FI_STORE_OFFSETS_BM) != 0)
|
104
|
+
#define bits_has_norms(bits)\
|
105
|
+
((bits & (FRT_FI_OMIT_NORMS_BM|FRT_FI_IS_INDEXED_BM)) == FRT_FI_IS_INDEXED_BM)
|
126
106
|
|
127
107
|
/****************************************************************************
|
128
108
|
*
|
@@ -133,21 +113,18 @@ extern void frt_fi_deref(FrtFieldInfo *fi);
|
|
133
113
|
#define FIELD_INFOS_INIT_CAPA 4
|
134
114
|
/* carry changes over to dummy_fis in test/test_segments.c */
|
135
115
|
typedef struct FrtFieldInfos {
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
int capa;
|
142
|
-
FrtFieldInfo **fields;
|
143
|
-
FrtHash *field_dict;
|
116
|
+
unsigned int bits;
|
117
|
+
int size;
|
118
|
+
int capa;
|
119
|
+
FrtFieldInfo **fields;
|
120
|
+
FrtHash *field_dict;
|
144
121
|
_Atomic unsigned int ref_cnt;
|
145
|
-
VALUE
|
122
|
+
VALUE rfis;
|
146
123
|
} FrtFieldInfos;
|
147
124
|
|
148
125
|
FrtFieldInfos *frt_fis_alloc();
|
149
|
-
FrtFieldInfos *frt_fis_init(FrtFieldInfos *fis,
|
150
|
-
FrtFieldInfos *frt_fis_new(
|
126
|
+
FrtFieldInfos *frt_fis_init(FrtFieldInfos *fis, unsigned int bits);
|
127
|
+
FrtFieldInfos *frt_fis_new(unsigned int bits);
|
151
128
|
extern FrtFieldInfo *frt_fis_add_field(FrtFieldInfos *fis, FrtFieldInfo *fi);
|
152
129
|
extern FrtFieldInfo *frt_fis_get_field(FrtFieldInfos *fis, ID name);
|
153
130
|
extern int frt_fis_get_field_num(FrtFieldInfos *fis, ID name);
|
@@ -265,25 +242,25 @@ FrtTermInfo *frt_te_get_ti(struct FrtTermEnum *te);
|
|
265
242
|
/* FrtSegmentTermIndex */
|
266
243
|
|
267
244
|
typedef struct FrtSegmentTermIndex {
|
268
|
-
frt_off_t
|
269
|
-
frt_off_t
|
245
|
+
frt_off_t index_ptr;
|
246
|
+
frt_off_t ptr;
|
270
247
|
int index_cnt;
|
271
248
|
int size;
|
272
249
|
char **index_terms;
|
273
250
|
int *index_term_lens;
|
274
251
|
FrtTermInfo *index_term_infos;
|
275
|
-
frt_off_t
|
252
|
+
frt_off_t *index_ptrs;
|
276
253
|
} FrtSegmentTermIndex;
|
277
254
|
|
278
255
|
/* FrtSegmentFieldIndex */
|
279
256
|
|
280
257
|
typedef struct FrtSegmentFieldIndex {
|
281
|
-
|
282
|
-
int
|
283
|
-
int
|
258
|
+
pthread_mutex_t mutex;
|
259
|
+
int skip_interval;
|
260
|
+
int index_interval;
|
284
261
|
frt_off_t index_ptr;
|
285
|
-
FrtTermEnum
|
286
|
-
FrtHash
|
262
|
+
FrtTermEnum *index_te;
|
263
|
+
FrtHash *field_dict;
|
287
264
|
} FrtSegmentFieldIndex;
|
288
265
|
|
289
266
|
/* FrtSegmentTermEnum */
|
@@ -681,9 +658,9 @@ struct FrtIndexReader {
|
|
681
658
|
FrtFieldInfos *fis;
|
682
659
|
FrtHash *cache;
|
683
660
|
FrtHash *field_index_cache;
|
684
|
-
|
661
|
+
pthread_mutex_t field_index_mutex;
|
685
662
|
frt_uchar *fake_norms;
|
686
|
-
|
663
|
+
pthread_mutex_t mutex;
|
687
664
|
bool has_changes : 1;
|
688
665
|
bool is_stale : 1;
|
689
666
|
bool is_owner : 1;
|
@@ -815,7 +792,7 @@ extern void frt_dw_reset_postings(FrtHash *postings);
|
|
815
792
|
|
816
793
|
struct FrtIndexWriter {
|
817
794
|
FrtConfig config;
|
818
|
-
|
795
|
+
pthread_mutex_t mutex;
|
819
796
|
FrtStore *store;
|
820
797
|
FrtAnalyzer *analyzer;
|
821
798
|
FrtSegmentInfos *sis;
|