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.
Files changed (133) 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/brotli_dec_decode.c +4 -2
  6. data/ext/isomorfeus_ferret_ext/brotli_enc_encode.c +3 -2
  7. data/ext/isomorfeus_ferret_ext/frb_analysis.c +4 -5
  8. data/ext/isomorfeus_ferret_ext/frb_field_info.c +3 -4
  9. data/ext/isomorfeus_ferret_ext/frb_index.c +161 -187
  10. data/ext/isomorfeus_ferret_ext/frb_lazy_doc.c +14 -16
  11. data/ext/isomorfeus_ferret_ext/frb_search.c +77 -69
  12. data/ext/isomorfeus_ferret_ext/frb_store.c +27 -13
  13. data/ext/isomorfeus_ferret_ext/frb_utils.c +3 -6
  14. data/ext/isomorfeus_ferret_ext/frt_analysis.c +39 -46
  15. data/ext/isomorfeus_ferret_ext/frt_analysis.h +9 -9
  16. data/ext/isomorfeus_ferret_ext/frt_array.c +11 -22
  17. data/ext/isomorfeus_ferret_ext/frt_bitvector.h +3 -6
  18. data/ext/isomorfeus_ferret_ext/frt_doc_field.c +87 -0
  19. data/ext/isomorfeus_ferret_ext/frt_doc_field.h +26 -0
  20. data/ext/isomorfeus_ferret_ext/frt_document.c +4 -97
  21. data/ext/isomorfeus_ferret_ext/frt_document.h +5 -33
  22. data/ext/isomorfeus_ferret_ext/frt_except.c +8 -6
  23. data/ext/isomorfeus_ferret_ext/frt_except.h +1 -2
  24. data/ext/isomorfeus_ferret_ext/frt_field_index.c +14 -33
  25. data/ext/isomorfeus_ferret_ext/frt_field_index.h +0 -6
  26. data/ext/isomorfeus_ferret_ext/frt_field_info.c +69 -0
  27. data/ext/isomorfeus_ferret_ext/frt_field_info.h +49 -0
  28. data/ext/isomorfeus_ferret_ext/frt_field_infos.c +196 -0
  29. data/ext/isomorfeus_ferret_ext/frt_field_infos.h +35 -0
  30. data/ext/isomorfeus_ferret_ext/frt_filter.c +2 -2
  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 +35 -45
  39. data/ext/isomorfeus_ferret_ext/frt_in_stream.h +3 -2
  40. data/ext/isomorfeus_ferret_ext/frt_ind.c +21 -39
  41. data/ext/isomorfeus_ferret_ext/frt_ind.h +1 -1
  42. data/ext/isomorfeus_ferret_ext/frt_index.c +334 -848
  43. data/ext/isomorfeus_ferret_ext/frt_index.h +4 -105
  44. data/ext/isomorfeus_ferret_ext/frt_lang.c +5 -10
  45. data/ext/isomorfeus_ferret_ext/frt_lazy_doc.c +3 -3
  46. data/ext/isomorfeus_ferret_ext/frt_lazy_doc.h +1 -1
  47. data/ext/isomorfeus_ferret_ext/frt_lazy_doc_field.c +18 -25
  48. data/ext/isomorfeus_ferret_ext/frt_lazy_doc_field.h +5 -5
  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 +31 -43
  54. data/ext/isomorfeus_ferret_ext/frt_out_stream.h +2 -2
  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 +131 -217
  60. data/ext/isomorfeus_ferret_ext/frt_q_const_score.c +2 -2
  61. data/ext/isomorfeus_ferret_ext/frt_q_filtered_query.c +4 -4
  62. data/ext/isomorfeus_ferret_ext/frt_q_match_all.c +18 -26
  63. data/ext/isomorfeus_ferret_ext/frt_q_multi_term.c +27 -28
  64. data/ext/isomorfeus_ferret_ext/frt_q_parser.c +49 -98
  65. data/ext/isomorfeus_ferret_ext/frt_q_phrase.c +64 -116
  66. data/ext/isomorfeus_ferret_ext/frt_q_range.c +8 -14
  67. data/ext/isomorfeus_ferret_ext/frt_q_span.c +251 -365
  68. data/ext/isomorfeus_ferret_ext/frt_q_term.c +9 -9
  69. data/ext/isomorfeus_ferret_ext/frt_q_wildcard.c +1 -2
  70. data/ext/isomorfeus_ferret_ext/frt_ram_store.c +134 -85
  71. data/ext/isomorfeus_ferret_ext/frt_search.c +109 -191
  72. data/ext/isomorfeus_ferret_ext/frt_search.h +6 -6
  73. data/ext/isomorfeus_ferret_ext/frt_similarity.c +12 -23
  74. data/ext/isomorfeus_ferret_ext/frt_similarity.h +1 -2
  75. data/ext/isomorfeus_ferret_ext/frt_sort.c +20 -20
  76. data/ext/isomorfeus_ferret_ext/frt_store.c +13 -25
  77. data/ext/isomorfeus_ferret_ext/frt_store.h +86 -52
  78. data/ext/isomorfeus_ferret_ext/frt_term_vectors.c +8 -16
  79. data/ext/isomorfeus_ferret_ext/frt_win32.h +5 -10
  80. data/ext/isomorfeus_ferret_ext/isomorfeus_ferret.c +12 -11
  81. data/ext/isomorfeus_ferret_ext/isomorfeus_ferret.h +11 -13
  82. data/ext/isomorfeus_ferret_ext/lz4.c +422 -195
  83. data/ext/isomorfeus_ferret_ext/lz4.h +114 -46
  84. data/ext/isomorfeus_ferret_ext/lz4frame.c +421 -242
  85. data/ext/isomorfeus_ferret_ext/lz4frame.h +122 -53
  86. data/ext/isomorfeus_ferret_ext/lz4hc.c +127 -111
  87. data/ext/isomorfeus_ferret_ext/lz4hc.h +14 -14
  88. data/ext/isomorfeus_ferret_ext/lz4xxhash.h +1 -1
  89. data/ext/isomorfeus_ferret_ext/mdbx.c +3762 -2526
  90. data/ext/isomorfeus_ferret_ext/mdbx.h +115 -70
  91. data/ext/isomorfeus_ferret_ext/test.c +41 -88
  92. data/ext/isomorfeus_ferret_ext/test.h +3 -6
  93. data/ext/isomorfeus_ferret_ext/test_1710.c +11 -13
  94. data/ext/isomorfeus_ferret_ext/test_analysis.c +32 -64
  95. data/ext/isomorfeus_ferret_ext/test_array.c +6 -12
  96. data/ext/isomorfeus_ferret_ext/test_bitvector.c +12 -24
  97. data/ext/isomorfeus_ferret_ext/test_document.c +23 -33
  98. data/ext/isomorfeus_ferret_ext/test_except.c +10 -21
  99. data/ext/isomorfeus_ferret_ext/test_fields.c +62 -68
  100. data/ext/isomorfeus_ferret_ext/test_file_deleter.c +16 -25
  101. data/ext/isomorfeus_ferret_ext/test_filter.c +22 -33
  102. data/ext/isomorfeus_ferret_ext/test_global.c +14 -29
  103. data/ext/isomorfeus_ferret_ext/test_hash.c +19 -38
  104. data/ext/isomorfeus_ferret_ext/test_hashset.c +8 -16
  105. data/ext/isomorfeus_ferret_ext/test_helper.c +4 -8
  106. data/ext/isomorfeus_ferret_ext/test_highlighter.c +16 -28
  107. data/ext/isomorfeus_ferret_ext/test_index.c +307 -519
  108. data/ext/isomorfeus_ferret_ext/test_lang.c +7 -14
  109. data/ext/isomorfeus_ferret_ext/test_mdbx_store.c +2 -5
  110. data/ext/isomorfeus_ferret_ext/test_mempool.c +5 -10
  111. data/ext/isomorfeus_ferret_ext/test_multimapper.c +3 -6
  112. data/ext/isomorfeus_ferret_ext/test_priorityqueue.c +9 -18
  113. data/ext/isomorfeus_ferret_ext/test_q_const_score.c +4 -6
  114. data/ext/isomorfeus_ferret_ext/test_q_filtered.c +3 -4
  115. data/ext/isomorfeus_ferret_ext/test_q_fuzzy.c +9 -15
  116. data/ext/isomorfeus_ferret_ext/test_q_parser.c +8 -16
  117. data/ext/isomorfeus_ferret_ext/test_q_span.c +19 -35
  118. data/ext/isomorfeus_ferret_ext/test_ram_store.c +14 -13
  119. data/ext/isomorfeus_ferret_ext/test_search.c +66 -115
  120. data/ext/isomorfeus_ferret_ext/test_segments.c +8 -13
  121. data/ext/isomorfeus_ferret_ext/test_similarity.c +2 -4
  122. data/ext/isomorfeus_ferret_ext/test_sort.c +17 -27
  123. data/ext/isomorfeus_ferret_ext/test_store.c +96 -115
  124. data/ext/isomorfeus_ferret_ext/test_term.c +9 -15
  125. data/ext/isomorfeus_ferret_ext/test_term_vectors.c +9 -14
  126. data/ext/isomorfeus_ferret_ext/test_test.c +4 -8
  127. data/ext/isomorfeus_ferret_ext/test_threading.c +15 -21
  128. data/ext/isomorfeus_ferret_ext/testhelper.c +11 -21
  129. data/ext/isomorfeus_ferret_ext/testhelper.h +1 -1
  130. data/ext/isomorfeus_ferret_ext/tests_all.h +1 -2
  131. data/lib/isomorfeus/ferret/index/index.rb +8 -8
  132. data/lib/isomorfeus/ferret/version.rb +1 -1
  133. 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
- 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