isomorfeus-ferret 0.17.1 → 0.17.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/isomorfeus_ferret_ext/benchmark.c +9 -20
- data/ext/isomorfeus_ferret_ext/benchmarks_all.h +1 -2
- data/ext/isomorfeus_ferret_ext/bm_hash.c +1 -2
- data/ext/isomorfeus_ferret_ext/bm_store.c +2 -0
- data/ext/isomorfeus_ferret_ext/brotli_dec_decode.c +4 -2
- data/ext/isomorfeus_ferret_ext/brotli_enc_encode.c +3 -2
- data/ext/isomorfeus_ferret_ext/frb_analysis.c +4 -5
- data/ext/isomorfeus_ferret_ext/frb_field_info.c +3 -4
- data/ext/isomorfeus_ferret_ext/frb_index.c +118 -160
- data/ext/isomorfeus_ferret_ext/frb_lazy_doc.c +14 -16
- data/ext/isomorfeus_ferret_ext/frb_search.c +31 -23
- data/ext/isomorfeus_ferret_ext/frb_store.c +27 -13
- data/ext/isomorfeus_ferret_ext/frb_utils.c +3 -6
- data/ext/isomorfeus_ferret_ext/frt_analysis.c +39 -46
- data/ext/isomorfeus_ferret_ext/frt_analysis.h +9 -9
- data/ext/isomorfeus_ferret_ext/frt_array.c +11 -22
- data/ext/isomorfeus_ferret_ext/frt_bitvector.h +3 -6
- data/ext/isomorfeus_ferret_ext/frt_doc_field.c +87 -0
- data/ext/isomorfeus_ferret_ext/frt_doc_field.h +26 -0
- data/ext/isomorfeus_ferret_ext/frt_document.c +4 -97
- data/ext/isomorfeus_ferret_ext/frt_document.h +2 -27
- data/ext/isomorfeus_ferret_ext/frt_except.c +50 -6
- data/ext/isomorfeus_ferret_ext/frt_except.h +3 -2
- data/ext/isomorfeus_ferret_ext/frt_field_index.c +13 -32
- data/ext/isomorfeus_ferret_ext/frt_field_index.h +0 -6
- data/ext/isomorfeus_ferret_ext/frt_field_info.c +69 -0
- data/ext/isomorfeus_ferret_ext/frt_field_info.h +49 -0
- data/ext/isomorfeus_ferret_ext/frt_field_infos.c +196 -0
- data/ext/isomorfeus_ferret_ext/frt_field_infos.h +35 -0
- data/ext/isomorfeus_ferret_ext/frt_global.c +10 -4
- data/ext/isomorfeus_ferret_ext/frt_global.h +11 -15
- data/ext/isomorfeus_ferret_ext/frt_hash.c +8 -8
- data/ext/isomorfeus_ferret_ext/frt_hash.h +1 -2
- data/ext/isomorfeus_ferret_ext/frt_hashset.c +20 -40
- data/ext/isomorfeus_ferret_ext/frt_hashset.h +1 -2
- data/ext/isomorfeus_ferret_ext/frt_helper.c +7 -15
- data/ext/isomorfeus_ferret_ext/frt_in_stream.c +482 -0
- data/ext/isomorfeus_ferret_ext/frt_in_stream.h +241 -0
- data/ext/isomorfeus_ferret_ext/frt_ind.c +20 -49
- data/ext/isomorfeus_ferret_ext/frt_ind.h +0 -1
- data/ext/isomorfeus_ferret_ext/frt_index.c +296 -1857
- data/ext/isomorfeus_ferret_ext/frt_index.h +2 -145
- data/ext/isomorfeus_ferret_ext/frt_lang.c +5 -10
- data/ext/isomorfeus_ferret_ext/frt_lazy_doc.c +29 -0
- data/ext/isomorfeus_ferret_ext/frt_lazy_doc.h +19 -0
- data/ext/isomorfeus_ferret_ext/frt_lazy_doc_field.c +93 -0
- data/ext/isomorfeus_ferret_ext/frt_lazy_doc_field.h +33 -0
- data/ext/isomorfeus_ferret_ext/frt_mdbx_store.c +102 -70
- data/ext/isomorfeus_ferret_ext/frt_mempool.c +8 -16
- data/ext/isomorfeus_ferret_ext/frt_multimapper.c +23 -46
- data/ext/isomorfeus_ferret_ext/frt_multimapper.h +4 -8
- data/ext/isomorfeus_ferret_ext/frt_out_stream.c +334 -0
- data/ext/isomorfeus_ferret_ext/frt_out_stream.h +198 -0
- data/ext/isomorfeus_ferret_ext/frt_posh.c +6 -819
- data/ext/isomorfeus_ferret_ext/frt_posh.h +0 -57
- data/ext/isomorfeus_ferret_ext/frt_priorityqueue.c +11 -22
- data/ext/isomorfeus_ferret_ext/frt_priorityqueue.h +1 -2
- data/ext/isomorfeus_ferret_ext/frt_q_boolean.c +85 -171
- data/ext/isomorfeus_ferret_ext/frt_q_match_all.c +8 -16
- data/ext/isomorfeus_ferret_ext/frt_q_multi_term.c +1 -2
- data/ext/isomorfeus_ferret_ext/frt_q_parser.c +49 -98
- data/ext/isomorfeus_ferret_ext/frt_q_phrase.c +52 -104
- data/ext/isomorfeus_ferret_ext/frt_q_range.c +6 -12
- data/ext/isomorfeus_ferret_ext/frt_q_span.c +113 -226
- data/ext/isomorfeus_ferret_ext/frt_q_wildcard.c +1 -2
- data/ext/isomorfeus_ferret_ext/frt_ram_store.c +134 -85
- data/ext/isomorfeus_ferret_ext/frt_ram_store.h +12 -0
- data/ext/isomorfeus_ferret_ext/frt_search.c +82 -164
- data/ext/isomorfeus_ferret_ext/frt_similarity.c +11 -22
- data/ext/isomorfeus_ferret_ext/frt_similarity.h +1 -2
- data/ext/isomorfeus_ferret_ext/frt_store.c +13 -536
- data/ext/isomorfeus_ferret_ext/frt_store.h +90 -495
- data/ext/isomorfeus_ferret_ext/frt_stream.h +18 -0
- data/ext/isomorfeus_ferret_ext/frt_term_vectors.c +8 -16
- data/ext/isomorfeus_ferret_ext/frt_win32.h +5 -10
- data/ext/isomorfeus_ferret_ext/isomorfeus_ferret.c +12 -11
- data/ext/isomorfeus_ferret_ext/isomorfeus_ferret.h +11 -13
- data/ext/isomorfeus_ferret_ext/lz4.c +422 -195
- data/ext/isomorfeus_ferret_ext/lz4.h +114 -46
- data/ext/isomorfeus_ferret_ext/lz4frame.c +421 -242
- data/ext/isomorfeus_ferret_ext/lz4frame.h +122 -53
- data/ext/isomorfeus_ferret_ext/lz4hc.c +127 -111
- data/ext/isomorfeus_ferret_ext/lz4hc.h +14 -14
- data/ext/isomorfeus_ferret_ext/lz4xxhash.h +1 -1
- data/ext/isomorfeus_ferret_ext/mdbx.c +3762 -2526
- data/ext/isomorfeus_ferret_ext/mdbx.h +115 -70
- data/ext/isomorfeus_ferret_ext/test.c +40 -87
- data/ext/isomorfeus_ferret_ext/test.h +3 -6
- data/ext/isomorfeus_ferret_ext/test_1710.c +11 -13
- data/ext/isomorfeus_ferret_ext/test_analysis.c +32 -64
- data/ext/isomorfeus_ferret_ext/test_array.c +6 -12
- data/ext/isomorfeus_ferret_ext/test_bitvector.c +12 -24
- data/ext/isomorfeus_ferret_ext/test_document.c +23 -33
- data/ext/isomorfeus_ferret_ext/test_except.c +10 -21
- data/ext/isomorfeus_ferret_ext/test_fields.c +62 -68
- data/ext/isomorfeus_ferret_ext/test_file_deleter.c +15 -24
- data/ext/isomorfeus_ferret_ext/test_filter.c +17 -27
- data/ext/isomorfeus_ferret_ext/test_global.c +14 -29
- data/ext/isomorfeus_ferret_ext/test_hash.c +19 -38
- data/ext/isomorfeus_ferret_ext/test_hashset.c +8 -16
- data/ext/isomorfeus_ferret_ext/test_helper.c +4 -8
- data/ext/isomorfeus_ferret_ext/test_highlighter.c +16 -28
- data/ext/isomorfeus_ferret_ext/test_index.c +277 -495
- data/ext/isomorfeus_ferret_ext/test_lang.c +7 -14
- data/ext/isomorfeus_ferret_ext/test_mdbx_store.c +2 -5
- data/ext/isomorfeus_ferret_ext/test_mempool.c +5 -10
- data/ext/isomorfeus_ferret_ext/test_multimapper.c +3 -6
- data/ext/isomorfeus_ferret_ext/test_priorityqueue.c +9 -18
- data/ext/isomorfeus_ferret_ext/test_q_const_score.c +4 -6
- data/ext/isomorfeus_ferret_ext/test_q_filtered.c +3 -4
- data/ext/isomorfeus_ferret_ext/test_q_fuzzy.c +9 -15
- data/ext/isomorfeus_ferret_ext/test_q_parser.c +8 -16
- data/ext/isomorfeus_ferret_ext/test_q_span.c +19 -35
- data/ext/isomorfeus_ferret_ext/test_ram_store.c +14 -13
- data/ext/isomorfeus_ferret_ext/test_search.c +60 -109
- data/ext/isomorfeus_ferret_ext/test_segments.c +8 -13
- data/ext/isomorfeus_ferret_ext/test_similarity.c +2 -4
- data/ext/isomorfeus_ferret_ext/test_sort.c +14 -24
- data/ext/isomorfeus_ferret_ext/test_store.c +96 -115
- data/ext/isomorfeus_ferret_ext/test_term.c +9 -15
- data/ext/isomorfeus_ferret_ext/test_term_vectors.c +9 -14
- data/ext/isomorfeus_ferret_ext/test_test.c +4 -8
- data/ext/isomorfeus_ferret_ext/test_threading.c +15 -30
- data/ext/isomorfeus_ferret_ext/testhelper.c +11 -21
- data/ext/isomorfeus_ferret_ext/testhelper.h +1 -1
- data/ext/isomorfeus_ferret_ext/tests_all.h +1 -2
- data/lib/isomorfeus/ferret/index/index.rb +1 -12
- data/lib/isomorfeus/ferret/version.rb +1 -1
- metadata +43 -4
@@ -7,8 +7,7 @@
|
|
7
7
|
* over all alements in the HashSet. It also uses a Hash to keep track of
|
8
8
|
* which elements have been added and their index in the +elems+ array.
|
9
9
|
*/
|
10
|
-
static FrtHashSet *hs_alloc(frt_free_ft free_func)
|
11
|
-
{
|
10
|
+
static FrtHashSet *hs_alloc(frt_free_ft free_func) {
|
12
11
|
FrtHashSet *hs = FRT_ALLOC(FrtHashSet);
|
13
12
|
hs->size = 0;
|
14
13
|
hs->first = hs->last = NULL;
|
@@ -16,29 +15,25 @@ static FrtHashSet *hs_alloc(frt_free_ft free_func)
|
|
16
15
|
return hs;
|
17
16
|
}
|
18
17
|
|
19
|
-
FrtHashSet *frt_hs_new(frt_hash_ft hash_func, frt_eq_ft eq_func, frt_free_ft free_func)
|
20
|
-
{
|
18
|
+
FrtHashSet *frt_hs_new(frt_hash_ft hash_func, frt_eq_ft eq_func, frt_free_ft free_func) {
|
21
19
|
FrtHashSet *hs = hs_alloc(free_func);
|
22
20
|
hs->ht = frt_h_new(hash_func, eq_func, NULL, NULL);
|
23
21
|
return hs;
|
24
22
|
}
|
25
23
|
|
26
|
-
FrtHashSet *frt_hs_new_str(frt_free_ft free_func)
|
27
|
-
{
|
24
|
+
FrtHashSet *frt_hs_new_str(frt_free_ft free_func) {
|
28
25
|
FrtHashSet *hs = hs_alloc(free_func);
|
29
26
|
hs->ht = frt_h_new_str((frt_free_ft) NULL, NULL);
|
30
27
|
return hs;
|
31
28
|
}
|
32
29
|
|
33
|
-
FrtHashSet *frt_hs_new_ptr(frt_free_ft free_func)
|
34
|
-
{
|
30
|
+
FrtHashSet *frt_hs_new_ptr(frt_free_ft free_func) {
|
35
31
|
FrtHashSet *hs = hs_alloc(free_func);
|
36
32
|
hs->ht = frt_h_new_ptr(NULL);
|
37
33
|
return hs;
|
38
34
|
}
|
39
35
|
|
40
|
-
static void hs_clear(FrtHashSet *hs, bool destroy)
|
41
|
-
{
|
36
|
+
static void hs_clear(FrtHashSet *hs, bool destroy) {
|
42
37
|
FrtHashSetEntry *curr, *next = hs->first;
|
43
38
|
frt_free_ft do_free = destroy ? hs->free_elem_i : &frt_dummy_free;
|
44
39
|
while (NULL != (curr = next)) {
|
@@ -50,36 +45,31 @@ static void hs_clear(FrtHashSet *hs, bool destroy)
|
|
50
45
|
hs->size = 0;
|
51
46
|
}
|
52
47
|
|
53
|
-
void frt_hs_clear(FrtHashSet *hs)
|
54
|
-
{
|
48
|
+
void frt_hs_clear(FrtHashSet *hs) {
|
55
49
|
hs_clear(hs, true);
|
56
50
|
frt_h_clear(hs->ht);
|
57
51
|
}
|
58
52
|
|
59
|
-
void frt_hs_free(FrtHashSet *hs)
|
60
|
-
{
|
53
|
+
void frt_hs_free(FrtHashSet *hs) {
|
61
54
|
hs_clear(hs, false);
|
62
55
|
frt_h_destroy(hs->ht);
|
63
56
|
free(hs);
|
64
57
|
}
|
65
58
|
|
66
|
-
void frt_hs_destroy(FrtHashSet *hs)
|
67
|
-
{
|
59
|
+
void frt_hs_destroy(FrtHashSet *hs) {
|
68
60
|
hs_clear(hs, true);
|
69
61
|
frt_h_destroy(hs->ht);
|
70
62
|
free(hs);
|
71
63
|
}
|
72
64
|
|
73
|
-
static void append(FrtHashSet *hs, void *elem)
|
74
|
-
{
|
65
|
+
static void append(FrtHashSet *hs, void *elem) {
|
75
66
|
FrtHashSetEntry *entry = FRT_ALLOC(FrtHashSetEntry);
|
76
67
|
entry->elem = elem;
|
77
68
|
entry->prev = hs->last;
|
78
69
|
entry->next = NULL;
|
79
70
|
if (!hs->first) {
|
80
71
|
hs->first = hs->last = entry;
|
81
|
-
}
|
82
|
-
else {
|
72
|
+
} else {
|
83
73
|
hs->last->next = entry;
|
84
74
|
hs->last = entry;
|
85
75
|
}
|
@@ -87,8 +77,7 @@ static void append(FrtHashSet *hs, void *elem)
|
|
87
77
|
hs->size++;
|
88
78
|
}
|
89
79
|
|
90
|
-
FrtHashKeyStatus frt_hs_add(FrtHashSet *hs, void *elem)
|
91
|
-
{
|
80
|
+
FrtHashKeyStatus frt_hs_add(FrtHashSet *hs, void *elem) {
|
92
81
|
FrtHashKeyStatus has_elem = frt_h_has_key(hs->ht, elem);
|
93
82
|
switch (has_elem)
|
94
83
|
{
|
@@ -111,8 +100,7 @@ FrtHashKeyStatus frt_hs_add(FrtHashSet *hs, void *elem)
|
|
111
100
|
return has_elem;
|
112
101
|
}
|
113
102
|
|
114
|
-
int frt_hs_add_safe(FrtHashSet *hs, void *elem)
|
115
|
-
{
|
103
|
+
int frt_hs_add_safe(FrtHashSet *hs, void *elem) {
|
116
104
|
switch(frt_h_has_key(hs->ht, elem))
|
117
105
|
{
|
118
106
|
/* element can't be added */
|
@@ -128,24 +116,20 @@ int frt_hs_add_safe(FrtHashSet *hs, void *elem)
|
|
128
116
|
return true;
|
129
117
|
}
|
130
118
|
|
131
|
-
void *frt_hs_rem(FrtHashSet *hs, const void *elem)
|
132
|
-
{
|
119
|
+
void *frt_hs_rem(FrtHashSet *hs, const void *elem) {
|
133
120
|
void *return_elem;
|
134
121
|
FrtHashSetEntry *entry = (FrtHashSetEntry *)frt_h_get(hs->ht, elem);
|
135
122
|
if (entry == NULL) return NULL;
|
136
123
|
|
137
124
|
if (hs->first == hs->last) {
|
138
125
|
hs->first = hs->last = NULL;
|
139
|
-
}
|
140
|
-
else if (hs->first == entry) {
|
126
|
+
} else if (hs->first == entry) {
|
141
127
|
hs->first = entry->next;
|
142
128
|
hs->first->prev = NULL;
|
143
|
-
}
|
144
|
-
else if (hs->last == entry) {
|
129
|
+
} else if (hs->last == entry) {
|
145
130
|
hs->last = entry->prev;
|
146
131
|
hs->last->next = NULL;
|
147
|
-
}
|
148
|
-
else {
|
132
|
+
} else {
|
149
133
|
entry->prev->next = entry->next;
|
150
134
|
entry->next->prev = entry->prev;
|
151
135
|
}
|
@@ -156,8 +140,7 @@ void *frt_hs_rem(FrtHashSet *hs, const void *elem)
|
|
156
140
|
return return_elem;
|
157
141
|
}
|
158
142
|
|
159
|
-
int frt_hs_del(FrtHashSet *hs, const void *elem)
|
160
|
-
{
|
143
|
+
int frt_hs_del(FrtHashSet *hs, const void *elem) {
|
161
144
|
void *tmp_elem = frt_hs_rem(hs, elem);
|
162
145
|
if (tmp_elem != NULL) {
|
163
146
|
hs->free_elem_i(tmp_elem);
|
@@ -166,13 +149,11 @@ int frt_hs_del(FrtHashSet *hs, const void *elem)
|
|
166
149
|
return 0;
|
167
150
|
}
|
168
151
|
|
169
|
-
FrtHashKeyStatus frt_hs_exists(FrtHashSet *hs, const void *elem)
|
170
|
-
{
|
152
|
+
FrtHashKeyStatus frt_hs_exists(FrtHashSet *hs, const void *elem) {
|
171
153
|
return frt_h_has_key(hs->ht, elem);
|
172
154
|
}
|
173
155
|
|
174
|
-
FrtHashSet *frt_hs_merge(FrtHashSet *hs, FrtHashSet * other)
|
175
|
-
{
|
156
|
+
FrtHashSet *frt_hs_merge(FrtHashSet *hs, FrtHashSet * other) {
|
176
157
|
FrtHashSetEntry *entry = other->first;
|
177
158
|
for (; entry != NULL; entry = entry->next) {
|
178
159
|
frt_hs_add(hs, entry->elem);
|
@@ -184,8 +165,7 @@ FrtHashSet *frt_hs_merge(FrtHashSet *hs, FrtHashSet * other)
|
|
184
165
|
return hs;
|
185
166
|
}
|
186
167
|
|
187
|
-
void *frt_hs_orig(FrtHashSet *hs, const void *elem)
|
188
|
-
{
|
168
|
+
void *frt_hs_orig(FrtHashSet *hs, const void *elem) {
|
189
169
|
FrtHashSetEntry *entry = (FrtHashSetEntry *)frt_h_get(hs->ht, elem);
|
190
170
|
return entry ? entry->elem : NULL;
|
191
171
|
}
|
@@ -1,8 +1,6 @@
|
|
1
1
|
#include "frt_helper.h"
|
2
2
|
|
3
|
-
int frt_hlp_string_diff(register const char *const s1,
|
4
|
-
register const char *const s2)
|
5
|
-
{
|
3
|
+
int frt_hlp_string_diff(register const char *const s1, register const char *const s2) {
|
6
4
|
register int i = 0;
|
7
5
|
while (s1[i] && (s1[i] == s2[i])) {
|
8
6
|
i++;
|
@@ -10,26 +8,22 @@ int frt_hlp_string_diff(register const char *const s1,
|
|
10
8
|
return i;
|
11
9
|
}
|
12
10
|
|
13
|
-
frt_i32 frt_float2int(float f)
|
14
|
-
{
|
11
|
+
frt_i32 frt_float2int(float f) {
|
15
12
|
union { frt_i32 i; float f; } tmp;
|
16
13
|
tmp.f = f;
|
17
14
|
return tmp.i;
|
18
15
|
}
|
19
16
|
|
20
|
-
float frt_int2float(frt_i32 v)
|
21
|
-
{
|
17
|
+
float frt_int2float(frt_i32 v) {
|
22
18
|
union { frt_i32 i; float f; } tmp;
|
23
19
|
tmp.i = v;
|
24
20
|
return tmp.f;
|
25
21
|
}
|
26
22
|
|
27
|
-
float frt_byte2float(unsigned char b)
|
28
|
-
{
|
23
|
+
float frt_byte2float(unsigned char b) {
|
29
24
|
if (b == 0) {
|
30
25
|
return 0.0;
|
31
|
-
}
|
32
|
-
else {
|
26
|
+
} else {
|
33
27
|
frt_u32 mantissa = b & 0x07;
|
34
28
|
frt_u32 exponent = (b >> 3) & 0x1f;
|
35
29
|
|
@@ -37,12 +31,10 @@ float frt_byte2float(unsigned char b)
|
|
37
31
|
}
|
38
32
|
}
|
39
33
|
|
40
|
-
unsigned char frt_float2byte(float f)
|
41
|
-
{
|
34
|
+
unsigned char frt_float2byte(float f) {
|
42
35
|
if (f <= 0.0) {
|
43
36
|
return 0;
|
44
|
-
}
|
45
|
-
else {
|
37
|
+
} else {
|
46
38
|
/* correctly order the bytes for encoding */
|
47
39
|
frt_u32 i = frt_float2int(f);
|
48
40
|
int mantissa = (i & 0xEf0000) >> 21;
|