isomorfeus-ferret 0.17.2 → 0.17.4
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/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 +161 -187
- data/ext/isomorfeus_ferret_ext/frb_lazy_doc.c +14 -16
- data/ext/isomorfeus_ferret_ext/frb_search.c +77 -69
- 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 +5 -33
- data/ext/isomorfeus_ferret_ext/frt_except.c +8 -6
- data/ext/isomorfeus_ferret_ext/frt_except.h +1 -2
- data/ext/isomorfeus_ferret_ext/frt_field_index.c +14 -33
- 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_filter.c +2 -2
- 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 +35 -45
- data/ext/isomorfeus_ferret_ext/frt_in_stream.h +3 -2
- data/ext/isomorfeus_ferret_ext/frt_ind.c +21 -39
- data/ext/isomorfeus_ferret_ext/frt_ind.h +1 -1
- data/ext/isomorfeus_ferret_ext/frt_index.c +334 -848
- data/ext/isomorfeus_ferret_ext/frt_index.h +4 -105
- data/ext/isomorfeus_ferret_ext/frt_lang.c +5 -10
- data/ext/isomorfeus_ferret_ext/frt_lazy_doc.c +3 -3
- data/ext/isomorfeus_ferret_ext/frt_lazy_doc.h +1 -1
- data/ext/isomorfeus_ferret_ext/frt_lazy_doc_field.c +18 -25
- data/ext/isomorfeus_ferret_ext/frt_lazy_doc_field.h +5 -5
- 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 +31 -43
- data/ext/isomorfeus_ferret_ext/frt_out_stream.h +2 -2
- 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 +131 -217
- data/ext/isomorfeus_ferret_ext/frt_q_const_score.c +2 -2
- data/ext/isomorfeus_ferret_ext/frt_q_filtered_query.c +4 -4
- data/ext/isomorfeus_ferret_ext/frt_q_match_all.c +18 -26
- data/ext/isomorfeus_ferret_ext/frt_q_multi_term.c +27 -28
- data/ext/isomorfeus_ferret_ext/frt_q_parser.c +49 -98
- data/ext/isomorfeus_ferret_ext/frt_q_phrase.c +64 -116
- data/ext/isomorfeus_ferret_ext/frt_q_range.c +8 -14
- data/ext/isomorfeus_ferret_ext/frt_q_span.c +251 -365
- data/ext/isomorfeus_ferret_ext/frt_q_term.c +9 -9
- 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_search.c +109 -191
- data/ext/isomorfeus_ferret_ext/frt_search.h +6 -6
- data/ext/isomorfeus_ferret_ext/frt_similarity.c +12 -23
- data/ext/isomorfeus_ferret_ext/frt_similarity.h +1 -2
- data/ext/isomorfeus_ferret_ext/frt_sort.c +20 -20
- data/ext/isomorfeus_ferret_ext/frt_store.c +13 -25
- data/ext/isomorfeus_ferret_ext/frt_store.h +86 -52
- 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 +41 -88
- 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 +16 -25
- data/ext/isomorfeus_ferret_ext/test_filter.c +22 -33
- 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 +307 -519
- 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 +66 -115
- 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 +17 -27
- 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 -21
- 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 +8 -8
- data/lib/isomorfeus/ferret/version.rb +1 -1
- metadata +32 -6
@@ -10,8 +10,7 @@
|
|
10
10
|
*
|
11
11
|
****************************************************************************/
|
12
12
|
|
13
|
-
void frt_tv_destroy(FrtTermVector *tv)
|
14
|
-
{
|
13
|
+
void frt_tv_destroy(FrtTermVector *tv) {
|
15
14
|
int i = tv->term_cnt;
|
16
15
|
while (i > 0) {
|
17
16
|
i--;
|
@@ -23,8 +22,7 @@ void frt_tv_destroy(FrtTermVector *tv)
|
|
23
22
|
free(tv);
|
24
23
|
}
|
25
24
|
|
26
|
-
int frt_tv_scan_to_term_index(FrtTermVector *tv, const char *term)
|
27
|
-
{
|
25
|
+
int frt_tv_scan_to_term_index(FrtTermVector *tv, const char *term) {
|
28
26
|
int lo = 0; /* search starts array */
|
29
27
|
int hi = tv->term_cnt - 1; /* for 1st element < n, return its index */
|
30
28
|
int mid;
|
@@ -37,36 +35,30 @@ int frt_tv_scan_to_term_index(FrtTermVector *tv, const char *term)
|
|
37
35
|
cmp = strcmp(term, mid_term);
|
38
36
|
if (cmp < 0) {
|
39
37
|
hi = mid - 1;
|
40
|
-
}
|
41
|
-
else if (cmp > 0) {
|
38
|
+
} else if (cmp > 0) {
|
42
39
|
lo = mid + 1;
|
43
|
-
}
|
44
|
-
else { /* found a match */
|
40
|
+
} else { /* found a match */
|
45
41
|
return mid;
|
46
42
|
}
|
47
43
|
}
|
48
44
|
return lo;
|
49
45
|
}
|
50
46
|
|
51
|
-
int frt_tv_get_term_index(FrtTermVector *tv, const char *term)
|
52
|
-
{
|
47
|
+
int frt_tv_get_term_index(FrtTermVector *tv, const char *term) {
|
53
48
|
int index = frt_tv_scan_to_term_index(tv, term);
|
54
49
|
if (index < tv->term_cnt && (0 == strcmp(term, tv->terms[index].text))) {
|
55
50
|
/* found term */
|
56
51
|
return index;
|
57
|
-
}
|
58
|
-
else {
|
52
|
+
} else {
|
59
53
|
return -1;
|
60
54
|
}
|
61
55
|
}
|
62
56
|
|
63
|
-
FrtTVTerm *frt_tv_get_tv_term(FrtTermVector *tv, const char *term)
|
64
|
-
{
|
57
|
+
FrtTVTerm *frt_tv_get_tv_term(FrtTermVector *tv, const char *term) {
|
65
58
|
int index = frt_tv_get_term_index(tv, term);
|
66
59
|
if (index >= 0) {
|
67
60
|
return &(tv->terms[index]);
|
68
|
-
}
|
69
|
-
else {
|
61
|
+
} else {
|
70
62
|
return NULL;
|
71
63
|
}
|
72
64
|
}
|
@@ -4,20 +4,17 @@
|
|
4
4
|
#include "frt_global.h"
|
5
5
|
#include <io.h>
|
6
6
|
|
7
|
-
struct dirent
|
8
|
-
{
|
7
|
+
struct dirent {
|
9
8
|
char *d_name;
|
10
9
|
};
|
11
10
|
|
12
|
-
typedef struct DIR
|
13
|
-
{
|
11
|
+
typedef struct DIR {
|
14
12
|
struct _finddata_t find_data;
|
15
13
|
struct dirent de;
|
16
14
|
long handle;
|
17
15
|
} DIR;
|
18
16
|
|
19
|
-
DIR *opendir(const char *dirname)
|
20
|
-
{
|
17
|
+
DIR *opendir(const char *dirname) {
|
21
18
|
DIR *d = FRT_ALLOC_AND_ZERO(DIR);
|
22
19
|
char dirname_buf[FRT_MAX_FILE_PATH];
|
23
20
|
long ff_res;
|
@@ -33,8 +30,7 @@ DIR *opendir(const char *dirname)
|
|
33
30
|
return d;
|
34
31
|
}
|
35
32
|
|
36
|
-
struct dirent *readdir(DIR *d)
|
37
|
-
{
|
33
|
+
struct dirent *readdir(DIR *d) {
|
38
34
|
/* _findfirst already returned so do _findnext */
|
39
35
|
if (d->de.d_name != NULL) {
|
40
36
|
if (_findnext(d->handle, &d->find_data) < 0) {
|
@@ -45,8 +41,7 @@ struct dirent *readdir(DIR *d)
|
|
45
41
|
return &d->de;
|
46
42
|
}
|
47
43
|
|
48
|
-
void closedir(DIR *d)
|
49
|
-
{
|
44
|
+
void closedir(DIR *d) {
|
50
45
|
_findclose(d->handle);
|
51
46
|
free(d);
|
52
47
|
}
|
@@ -5,6 +5,8 @@
|
|
5
5
|
#include "frt_hashset.h"
|
6
6
|
#include "frt_threading.h"
|
7
7
|
|
8
|
+
const char *segm_idx_name = "segmented_index";
|
9
|
+
|
8
10
|
/* IDs */
|
9
11
|
ID id_new;
|
10
12
|
ID id_call;
|
@@ -32,21 +34,21 @@ VALUE sym_each;
|
|
32
34
|
/* Modules */
|
33
35
|
VALUE mIsomorfeus;
|
34
36
|
VALUE mFerret;
|
35
|
-
VALUE mStore;
|
36
|
-
VALUE mStringHelper;
|
37
|
-
VALUE mSpans;
|
38
37
|
|
39
38
|
/* Classes */
|
40
|
-
VALUE cTerm;
|
39
|
+
static VALUE cTerm;
|
41
40
|
VALUE cFileNotFoundError;
|
42
41
|
VALUE cParseError;
|
43
42
|
VALUE cStateError;
|
44
43
|
|
45
|
-
void Init_Benchmark(void);
|
46
|
-
void Init_Test(void);
|
44
|
+
extern void Init_Benchmark(void);
|
45
|
+
extern void Init_Test(void);
|
47
46
|
|
48
47
|
unsigned long value_hash(const void *key) {
|
49
|
-
|
48
|
+
/* double cast to prevent compiler warning:
|
49
|
+
* - first cast: pointer to number of same size
|
50
|
+
* - second cast: number to smaller number */
|
51
|
+
return (unsigned long)(uintptr_t)key;
|
50
52
|
}
|
51
53
|
|
52
54
|
int value_eq(const void *key1, const void *key2) {
|
@@ -119,15 +121,14 @@ ID frb_field(VALUE rfield) {
|
|
119
121
|
* Jeremie 'ahFeel' BORDIER
|
120
122
|
* ahFeel@rift.Fr
|
121
123
|
*/
|
122
|
-
char *json_concat_string(char *s, char *field) {
|
124
|
+
char *json_concat_string(char *s, const char *field) {
|
123
125
|
*(s++) = '"';
|
124
126
|
while (*field) {
|
125
127
|
if (*field == '"') {
|
126
128
|
*(s++) = '\'';
|
127
129
|
*(s++) = *(field++);
|
128
130
|
*(s++) = '\'';
|
129
|
-
}
|
130
|
-
else {
|
131
|
+
} else {
|
131
132
|
*(s++) = *(field++);
|
132
133
|
}
|
133
134
|
}
|
@@ -308,6 +309,6 @@ void Init_isomorfeus_ferret_ext(void) {
|
|
308
309
|
rb_define_const(mFerret, "FIX_INT_MAX", INT2FIX(INT_MAX >> 1));
|
309
310
|
}
|
310
311
|
|
311
|
-
|
312
|
+
void frb_raise(int excode, const char *msg) {
|
312
313
|
rb_raise(frb_get_error(ERROR_TYPES[excode]), "%s", msg);
|
313
314
|
}
|
@@ -1,10 +1,13 @@
|
|
1
|
-
#ifndef
|
2
|
-
#define
|
1
|
+
#ifndef __ISOMORFEUS_FERRET_H_
|
2
|
+
#define __ISOMORFEUS_FERRET_H_
|
3
|
+
|
3
4
|
#include "frt_global.h"
|
4
5
|
#include "frt_hashset.h"
|
5
6
|
#include "frt_document.h"
|
6
7
|
#include <ruby.h>
|
7
8
|
|
9
|
+
extern const char *segm_idx_name;
|
10
|
+
|
8
11
|
/* IDs */
|
9
12
|
extern ID id_new;
|
10
13
|
extern ID id_call;
|
@@ -29,24 +32,19 @@ extern VALUE sym_dir;
|
|
29
32
|
/* Modules */
|
30
33
|
extern VALUE mFerret;
|
31
34
|
extern VALUE mIndex;
|
32
|
-
extern VALUE mSearch;
|
33
|
-
extern VALUE mStore;
|
34
|
-
extern VALUE mStringHelper;
|
35
|
-
extern VALUE mSpans;
|
36
35
|
|
37
36
|
/* Classes */
|
38
37
|
extern VALUE cDirectory;
|
39
38
|
extern VALUE cFileNotFoundError;
|
40
39
|
extern VALUE cLockError;
|
41
|
-
extern VALUE cTerm;
|
42
40
|
|
43
41
|
/* Ferret Inits */
|
44
|
-
extern void Init_Utils(void);
|
45
42
|
extern void Init_Analysis(void);
|
46
|
-
extern void Init_Store(void);
|
47
43
|
extern void Init_Index(void);
|
48
|
-
extern void Init_Search(void);
|
49
44
|
extern void Init_QueryParser(void);
|
45
|
+
extern void Init_Search(void);
|
46
|
+
extern void Init_Store(void);
|
47
|
+
extern void Init_Utils(void);
|
50
48
|
|
51
49
|
extern void frb_raise(int excode, const char *msg);
|
52
50
|
extern void frb_create_dir(VALUE rpath);
|
@@ -54,11 +52,11 @@ extern VALUE frb_hs_to_rb_ary(FrtHashSet *hs);
|
|
54
52
|
extern void *frb_rb_data_ptr(VALUE val);
|
55
53
|
extern ID frb_field(VALUE rfield);
|
56
54
|
extern VALUE frb_get_term(ID field, const char *term);
|
57
|
-
extern char *json_concat_string(char *s, char *field);
|
55
|
+
extern char *json_concat_string(char *s, const char *field);
|
58
56
|
extern char *rs2s(VALUE rstr);
|
59
57
|
extern char *rstrdup(VALUE rstr);
|
60
58
|
|
61
|
-
#endif
|
62
|
-
|
63
59
|
#define frb_mark_cclass(klass) rb_ivar_set(klass, id_cclass, Qtrue)
|
64
60
|
#define frb_is_cclass(obj) (rb_ivar_defined(CLASS_OF(obj), id_cclass))
|
61
|
+
|
62
|
+
#endif
|