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.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/ext/isomorfeus_ferret_ext/benchmark.c +9 -20
  3. data/ext/isomorfeus_ferret_ext/benchmarks_all.h +1 -2
  4. data/ext/isomorfeus_ferret_ext/bm_hash.c +1 -2
  5. data/ext/isomorfeus_ferret_ext/bm_store.c +2 -0
  6. data/ext/isomorfeus_ferret_ext/brotli_dec_decode.c +4 -2
  7. data/ext/isomorfeus_ferret_ext/brotli_enc_encode.c +3 -2
  8. data/ext/isomorfeus_ferret_ext/frb_analysis.c +4 -5
  9. data/ext/isomorfeus_ferret_ext/frb_field_info.c +3 -4
  10. data/ext/isomorfeus_ferret_ext/frb_index.c +118 -160
  11. data/ext/isomorfeus_ferret_ext/frb_lazy_doc.c +14 -16
  12. data/ext/isomorfeus_ferret_ext/frb_search.c +31 -23
  13. data/ext/isomorfeus_ferret_ext/frb_store.c +27 -13
  14. data/ext/isomorfeus_ferret_ext/frb_utils.c +3 -6
  15. data/ext/isomorfeus_ferret_ext/frt_analysis.c +39 -46
  16. data/ext/isomorfeus_ferret_ext/frt_analysis.h +9 -9
  17. data/ext/isomorfeus_ferret_ext/frt_array.c +11 -22
  18. data/ext/isomorfeus_ferret_ext/frt_bitvector.h +3 -6
  19. data/ext/isomorfeus_ferret_ext/frt_doc_field.c +87 -0
  20. data/ext/isomorfeus_ferret_ext/frt_doc_field.h +26 -0
  21. data/ext/isomorfeus_ferret_ext/frt_document.c +4 -97
  22. data/ext/isomorfeus_ferret_ext/frt_document.h +2 -27
  23. data/ext/isomorfeus_ferret_ext/frt_except.c +50 -6
  24. data/ext/isomorfeus_ferret_ext/frt_except.h +3 -2
  25. data/ext/isomorfeus_ferret_ext/frt_field_index.c +13 -32
  26. data/ext/isomorfeus_ferret_ext/frt_field_index.h +0 -6
  27. data/ext/isomorfeus_ferret_ext/frt_field_info.c +69 -0
  28. data/ext/isomorfeus_ferret_ext/frt_field_info.h +49 -0
  29. data/ext/isomorfeus_ferret_ext/frt_field_infos.c +196 -0
  30. data/ext/isomorfeus_ferret_ext/frt_field_infos.h +35 -0
  31. data/ext/isomorfeus_ferret_ext/frt_global.c +10 -4
  32. data/ext/isomorfeus_ferret_ext/frt_global.h +11 -15
  33. data/ext/isomorfeus_ferret_ext/frt_hash.c +8 -8
  34. data/ext/isomorfeus_ferret_ext/frt_hash.h +1 -2
  35. data/ext/isomorfeus_ferret_ext/frt_hashset.c +20 -40
  36. data/ext/isomorfeus_ferret_ext/frt_hashset.h +1 -2
  37. data/ext/isomorfeus_ferret_ext/frt_helper.c +7 -15
  38. data/ext/isomorfeus_ferret_ext/frt_in_stream.c +482 -0
  39. data/ext/isomorfeus_ferret_ext/frt_in_stream.h +241 -0
  40. data/ext/isomorfeus_ferret_ext/frt_ind.c +20 -49
  41. data/ext/isomorfeus_ferret_ext/frt_ind.h +0 -1
  42. data/ext/isomorfeus_ferret_ext/frt_index.c +296 -1857
  43. data/ext/isomorfeus_ferret_ext/frt_index.h +2 -145
  44. data/ext/isomorfeus_ferret_ext/frt_lang.c +5 -10
  45. data/ext/isomorfeus_ferret_ext/frt_lazy_doc.c +29 -0
  46. data/ext/isomorfeus_ferret_ext/frt_lazy_doc.h +19 -0
  47. data/ext/isomorfeus_ferret_ext/frt_lazy_doc_field.c +93 -0
  48. data/ext/isomorfeus_ferret_ext/frt_lazy_doc_field.h +33 -0
  49. data/ext/isomorfeus_ferret_ext/frt_mdbx_store.c +102 -70
  50. data/ext/isomorfeus_ferret_ext/frt_mempool.c +8 -16
  51. data/ext/isomorfeus_ferret_ext/frt_multimapper.c +23 -46
  52. data/ext/isomorfeus_ferret_ext/frt_multimapper.h +4 -8
  53. data/ext/isomorfeus_ferret_ext/frt_out_stream.c +334 -0
  54. data/ext/isomorfeus_ferret_ext/frt_out_stream.h +198 -0
  55. data/ext/isomorfeus_ferret_ext/frt_posh.c +6 -819
  56. data/ext/isomorfeus_ferret_ext/frt_posh.h +0 -57
  57. data/ext/isomorfeus_ferret_ext/frt_priorityqueue.c +11 -22
  58. data/ext/isomorfeus_ferret_ext/frt_priorityqueue.h +1 -2
  59. data/ext/isomorfeus_ferret_ext/frt_q_boolean.c +85 -171
  60. data/ext/isomorfeus_ferret_ext/frt_q_match_all.c +8 -16
  61. data/ext/isomorfeus_ferret_ext/frt_q_multi_term.c +1 -2
  62. data/ext/isomorfeus_ferret_ext/frt_q_parser.c +49 -98
  63. data/ext/isomorfeus_ferret_ext/frt_q_phrase.c +52 -104
  64. data/ext/isomorfeus_ferret_ext/frt_q_range.c +6 -12
  65. data/ext/isomorfeus_ferret_ext/frt_q_span.c +113 -226
  66. data/ext/isomorfeus_ferret_ext/frt_q_wildcard.c +1 -2
  67. data/ext/isomorfeus_ferret_ext/frt_ram_store.c +134 -85
  68. data/ext/isomorfeus_ferret_ext/frt_ram_store.h +12 -0
  69. data/ext/isomorfeus_ferret_ext/frt_search.c +82 -164
  70. data/ext/isomorfeus_ferret_ext/frt_similarity.c +11 -22
  71. data/ext/isomorfeus_ferret_ext/frt_similarity.h +1 -2
  72. data/ext/isomorfeus_ferret_ext/frt_store.c +13 -536
  73. data/ext/isomorfeus_ferret_ext/frt_store.h +90 -495
  74. data/ext/isomorfeus_ferret_ext/frt_stream.h +18 -0
  75. data/ext/isomorfeus_ferret_ext/frt_term_vectors.c +8 -16
  76. data/ext/isomorfeus_ferret_ext/frt_win32.h +5 -10
  77. data/ext/isomorfeus_ferret_ext/isomorfeus_ferret.c +12 -11
  78. data/ext/isomorfeus_ferret_ext/isomorfeus_ferret.h +11 -13
  79. data/ext/isomorfeus_ferret_ext/lz4.c +422 -195
  80. data/ext/isomorfeus_ferret_ext/lz4.h +114 -46
  81. data/ext/isomorfeus_ferret_ext/lz4frame.c +421 -242
  82. data/ext/isomorfeus_ferret_ext/lz4frame.h +122 -53
  83. data/ext/isomorfeus_ferret_ext/lz4hc.c +127 -111
  84. data/ext/isomorfeus_ferret_ext/lz4hc.h +14 -14
  85. data/ext/isomorfeus_ferret_ext/lz4xxhash.h +1 -1
  86. data/ext/isomorfeus_ferret_ext/mdbx.c +3762 -2526
  87. data/ext/isomorfeus_ferret_ext/mdbx.h +115 -70
  88. data/ext/isomorfeus_ferret_ext/test.c +40 -87
  89. data/ext/isomorfeus_ferret_ext/test.h +3 -6
  90. data/ext/isomorfeus_ferret_ext/test_1710.c +11 -13
  91. data/ext/isomorfeus_ferret_ext/test_analysis.c +32 -64
  92. data/ext/isomorfeus_ferret_ext/test_array.c +6 -12
  93. data/ext/isomorfeus_ferret_ext/test_bitvector.c +12 -24
  94. data/ext/isomorfeus_ferret_ext/test_document.c +23 -33
  95. data/ext/isomorfeus_ferret_ext/test_except.c +10 -21
  96. data/ext/isomorfeus_ferret_ext/test_fields.c +62 -68
  97. data/ext/isomorfeus_ferret_ext/test_file_deleter.c +15 -24
  98. data/ext/isomorfeus_ferret_ext/test_filter.c +17 -27
  99. data/ext/isomorfeus_ferret_ext/test_global.c +14 -29
  100. data/ext/isomorfeus_ferret_ext/test_hash.c +19 -38
  101. data/ext/isomorfeus_ferret_ext/test_hashset.c +8 -16
  102. data/ext/isomorfeus_ferret_ext/test_helper.c +4 -8
  103. data/ext/isomorfeus_ferret_ext/test_highlighter.c +16 -28
  104. data/ext/isomorfeus_ferret_ext/test_index.c +277 -495
  105. data/ext/isomorfeus_ferret_ext/test_lang.c +7 -14
  106. data/ext/isomorfeus_ferret_ext/test_mdbx_store.c +2 -5
  107. data/ext/isomorfeus_ferret_ext/test_mempool.c +5 -10
  108. data/ext/isomorfeus_ferret_ext/test_multimapper.c +3 -6
  109. data/ext/isomorfeus_ferret_ext/test_priorityqueue.c +9 -18
  110. data/ext/isomorfeus_ferret_ext/test_q_const_score.c +4 -6
  111. data/ext/isomorfeus_ferret_ext/test_q_filtered.c +3 -4
  112. data/ext/isomorfeus_ferret_ext/test_q_fuzzy.c +9 -15
  113. data/ext/isomorfeus_ferret_ext/test_q_parser.c +8 -16
  114. data/ext/isomorfeus_ferret_ext/test_q_span.c +19 -35
  115. data/ext/isomorfeus_ferret_ext/test_ram_store.c +14 -13
  116. data/ext/isomorfeus_ferret_ext/test_search.c +60 -109
  117. data/ext/isomorfeus_ferret_ext/test_segments.c +8 -13
  118. data/ext/isomorfeus_ferret_ext/test_similarity.c +2 -4
  119. data/ext/isomorfeus_ferret_ext/test_sort.c +14 -24
  120. data/ext/isomorfeus_ferret_ext/test_store.c +96 -115
  121. data/ext/isomorfeus_ferret_ext/test_term.c +9 -15
  122. data/ext/isomorfeus_ferret_ext/test_term_vectors.c +9 -14
  123. data/ext/isomorfeus_ferret_ext/test_test.c +4 -8
  124. data/ext/isomorfeus_ferret_ext/test_threading.c +15 -30
  125. data/ext/isomorfeus_ferret_ext/testhelper.c +11 -21
  126. data/ext/isomorfeus_ferret_ext/testhelper.h +1 -1
  127. data/ext/isomorfeus_ferret_ext/tests_all.h +1 -2
  128. data/lib/isomorfeus/ferret/index/index.rb +1 -12
  129. data/lib/isomorfeus/ferret/version.rb +1 -1
  130. metadata +43 -4
@@ -0,0 +1,18 @@
1
+ #ifndef FRT_STREAM_H
2
+ #define FRT_STREAM_H
3
+
4
+ #include "frt_global.h"
5
+
6
+ #define FRT_COMPRESSION_BUFFER_SIZE 16348
7
+
8
+ #define VINT_MAX_LEN 10
9
+ #define VINT_END FRT_BUFFER_SIZE - VINT_MAX_LEN
10
+
11
+ typedef struct FrtBuffer {
12
+ frt_uchar buf[FRT_BUFFER_SIZE];
13
+ frt_off_t start;
14
+ frt_off_t pos;
15
+ frt_off_t len;
16
+ } FrtBuffer;
17
+
18
+ #endif
@@ -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
- return (unsigned long)key;
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
- extern void frb_raise(int excode, const char *msg) {
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 __FERRET_H_
2
- #define __FERRET_H_
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