isomorfeus-ferret 0.17.2 → 0.17.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) 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 +118 -125
  10. data/ext/isomorfeus_ferret_ext/frb_lazy_doc.c +14 -16
  11. data/ext/isomorfeus_ferret_ext/frb_search.c +31 -23
  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 +2 -27
  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 +13 -32
  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_global.c +10 -4
  31. data/ext/isomorfeus_ferret_ext/frt_global.h +11 -15
  32. data/ext/isomorfeus_ferret_ext/frt_hash.c +8 -8
  33. data/ext/isomorfeus_ferret_ext/frt_hash.h +1 -2
  34. data/ext/isomorfeus_ferret_ext/frt_hashset.c +20 -40
  35. data/ext/isomorfeus_ferret_ext/frt_hashset.h +1 -2
  36. data/ext/isomorfeus_ferret_ext/frt_helper.c +7 -15
  37. data/ext/isomorfeus_ferret_ext/frt_in_stream.c +35 -45
  38. data/ext/isomorfeus_ferret_ext/frt_in_stream.h +3 -2
  39. data/ext/isomorfeus_ferret_ext/frt_ind.c +20 -38
  40. data/ext/isomorfeus_ferret_ext/frt_index.c +292 -790
  41. data/ext/isomorfeus_ferret_ext/frt_index.h +1 -102
  42. data/ext/isomorfeus_ferret_ext/frt_lang.c +5 -10
  43. data/ext/isomorfeus_ferret_ext/frt_lazy_doc.c +3 -3
  44. data/ext/isomorfeus_ferret_ext/frt_lazy_doc.h +1 -1
  45. data/ext/isomorfeus_ferret_ext/frt_lazy_doc_field.c +18 -25
  46. data/ext/isomorfeus_ferret_ext/frt_lazy_doc_field.h +5 -5
  47. data/ext/isomorfeus_ferret_ext/frt_mdbx_store.c +102 -70
  48. data/ext/isomorfeus_ferret_ext/frt_mempool.c +8 -16
  49. data/ext/isomorfeus_ferret_ext/frt_multimapper.c +23 -46
  50. data/ext/isomorfeus_ferret_ext/frt_multimapper.h +4 -8
  51. data/ext/isomorfeus_ferret_ext/frt_out_stream.c +31 -43
  52. data/ext/isomorfeus_ferret_ext/frt_out_stream.h +2 -2
  53. data/ext/isomorfeus_ferret_ext/frt_posh.c +6 -819
  54. data/ext/isomorfeus_ferret_ext/frt_posh.h +0 -57
  55. data/ext/isomorfeus_ferret_ext/frt_priorityqueue.c +11 -22
  56. data/ext/isomorfeus_ferret_ext/frt_priorityqueue.h +1 -2
  57. data/ext/isomorfeus_ferret_ext/frt_q_boolean.c +85 -171
  58. data/ext/isomorfeus_ferret_ext/frt_q_match_all.c +8 -16
  59. data/ext/isomorfeus_ferret_ext/frt_q_multi_term.c +1 -2
  60. data/ext/isomorfeus_ferret_ext/frt_q_parser.c +49 -98
  61. data/ext/isomorfeus_ferret_ext/frt_q_phrase.c +52 -104
  62. data/ext/isomorfeus_ferret_ext/frt_q_range.c +6 -12
  63. data/ext/isomorfeus_ferret_ext/frt_q_span.c +113 -226
  64. data/ext/isomorfeus_ferret_ext/frt_q_wildcard.c +1 -2
  65. data/ext/isomorfeus_ferret_ext/frt_ram_store.c +134 -85
  66. data/ext/isomorfeus_ferret_ext/frt_search.c +82 -164
  67. data/ext/isomorfeus_ferret_ext/frt_similarity.c +11 -22
  68. data/ext/isomorfeus_ferret_ext/frt_similarity.h +1 -2
  69. data/ext/isomorfeus_ferret_ext/frt_store.c +13 -25
  70. data/ext/isomorfeus_ferret_ext/frt_store.h +86 -52
  71. data/ext/isomorfeus_ferret_ext/frt_term_vectors.c +8 -16
  72. data/ext/isomorfeus_ferret_ext/frt_win32.h +5 -10
  73. data/ext/isomorfeus_ferret_ext/isomorfeus_ferret.c +12 -11
  74. data/ext/isomorfeus_ferret_ext/isomorfeus_ferret.h +11 -13
  75. data/ext/isomorfeus_ferret_ext/lz4.c +422 -195
  76. data/ext/isomorfeus_ferret_ext/lz4.h +114 -46
  77. data/ext/isomorfeus_ferret_ext/lz4frame.c +421 -242
  78. data/ext/isomorfeus_ferret_ext/lz4frame.h +122 -53
  79. data/ext/isomorfeus_ferret_ext/lz4hc.c +127 -111
  80. data/ext/isomorfeus_ferret_ext/lz4hc.h +14 -14
  81. data/ext/isomorfeus_ferret_ext/lz4xxhash.h +1 -1
  82. data/ext/isomorfeus_ferret_ext/mdbx.c +3762 -2526
  83. data/ext/isomorfeus_ferret_ext/mdbx.h +115 -70
  84. data/ext/isomorfeus_ferret_ext/test.c +40 -87
  85. data/ext/isomorfeus_ferret_ext/test.h +3 -6
  86. data/ext/isomorfeus_ferret_ext/test_1710.c +11 -13
  87. data/ext/isomorfeus_ferret_ext/test_analysis.c +32 -64
  88. data/ext/isomorfeus_ferret_ext/test_array.c +6 -12
  89. data/ext/isomorfeus_ferret_ext/test_bitvector.c +12 -24
  90. data/ext/isomorfeus_ferret_ext/test_document.c +23 -33
  91. data/ext/isomorfeus_ferret_ext/test_except.c +10 -21
  92. data/ext/isomorfeus_ferret_ext/test_fields.c +62 -68
  93. data/ext/isomorfeus_ferret_ext/test_file_deleter.c +15 -23
  94. data/ext/isomorfeus_ferret_ext/test_filter.c +17 -27
  95. data/ext/isomorfeus_ferret_ext/test_global.c +14 -29
  96. data/ext/isomorfeus_ferret_ext/test_hash.c +19 -38
  97. data/ext/isomorfeus_ferret_ext/test_hashset.c +8 -16
  98. data/ext/isomorfeus_ferret_ext/test_helper.c +4 -8
  99. data/ext/isomorfeus_ferret_ext/test_highlighter.c +16 -28
  100. data/ext/isomorfeus_ferret_ext/test_index.c +277 -487
  101. data/ext/isomorfeus_ferret_ext/test_lang.c +7 -14
  102. data/ext/isomorfeus_ferret_ext/test_mdbx_store.c +2 -5
  103. data/ext/isomorfeus_ferret_ext/test_mempool.c +5 -10
  104. data/ext/isomorfeus_ferret_ext/test_multimapper.c +3 -6
  105. data/ext/isomorfeus_ferret_ext/test_priorityqueue.c +9 -18
  106. data/ext/isomorfeus_ferret_ext/test_q_const_score.c +4 -6
  107. data/ext/isomorfeus_ferret_ext/test_q_filtered.c +3 -4
  108. data/ext/isomorfeus_ferret_ext/test_q_fuzzy.c +9 -15
  109. data/ext/isomorfeus_ferret_ext/test_q_parser.c +8 -16
  110. data/ext/isomorfeus_ferret_ext/test_q_span.c +19 -35
  111. data/ext/isomorfeus_ferret_ext/test_ram_store.c +14 -13
  112. data/ext/isomorfeus_ferret_ext/test_search.c +60 -109
  113. data/ext/isomorfeus_ferret_ext/test_segments.c +8 -13
  114. data/ext/isomorfeus_ferret_ext/test_similarity.c +2 -4
  115. data/ext/isomorfeus_ferret_ext/test_sort.c +14 -24
  116. data/ext/isomorfeus_ferret_ext/test_store.c +96 -115
  117. data/ext/isomorfeus_ferret_ext/test_term.c +9 -15
  118. data/ext/isomorfeus_ferret_ext/test_term_vectors.c +9 -14
  119. data/ext/isomorfeus_ferret_ext/test_test.c +4 -8
  120. data/ext/isomorfeus_ferret_ext/test_threading.c +14 -20
  121. data/ext/isomorfeus_ferret_ext/testhelper.c +11 -21
  122. data/ext/isomorfeus_ferret_ext/testhelper.h +1 -1
  123. data/ext/isomorfeus_ferret_ext/tests_all.h +1 -2
  124. data/lib/isomorfeus/ferret/index/index.rb +1 -1
  125. data/lib/isomorfeus/ferret/version.rb +1 -1
  126. metadata +24 -4
@@ -11,8 +11,7 @@
11
11
  *
12
12
  ***************************************************************************/
13
13
 
14
- FrtExplanation *frt_expl_new(float value, const char *description, ...)
15
- {
14
+ FrtExplanation *frt_expl_new(float value, const char *description, ...) {
16
15
  FrtExplanation *expl = FRT_ALLOC(FrtExplanation);
17
16
 
18
17
  va_list args;
@@ -26,21 +25,18 @@ FrtExplanation *frt_expl_new(float value, const char *description, ...)
26
25
  return expl;
27
26
  }
28
27
 
29
- void frt_expl_destroy(FrtExplanation *expl)
30
- {
28
+ void frt_expl_destroy(FrtExplanation *expl) {
31
29
  frt_ary_destroy((void **)expl->details, (frt_free_ft)frt_expl_destroy);
32
30
  free(expl->description);
33
31
  free(expl);
34
32
  }
35
33
 
36
- FrtExplanation *frt_expl_add_detail(FrtExplanation *expl, FrtExplanation *detail)
37
- {
34
+ FrtExplanation *frt_expl_add_detail(FrtExplanation *expl, FrtExplanation *detail) {
38
35
  frt_ary_push(expl->details, detail);
39
36
  return expl;
40
37
  }
41
38
 
42
- char *frt_expl_to_s_depth(FrtExplanation *expl, int depth)
43
- {
39
+ char *frt_expl_to_s_depth(FrtExplanation *expl, int depth) {
44
40
  int i;
45
41
  char *buffer = FRT_ALLOC_N(char, depth * 2 + 1);
46
42
  const int num_details = frt_ary_size(expl->details);
@@ -57,8 +53,7 @@ char *frt_expl_to_s_depth(FrtExplanation *expl, int depth)
57
53
  return buffer;
58
54
  }
59
55
 
60
- char *frt_expl_to_html(FrtExplanation *expl)
61
- {
56
+ char *frt_expl_to_html(FrtExplanation *expl) {
62
57
  int i;
63
58
  char *buffer;
64
59
  const int num_details = frt_ary_size(expl->details);
@@ -79,8 +74,7 @@ char *frt_expl_to_html(FrtExplanation *expl)
79
74
  *
80
75
  ***************************************************************************/
81
76
 
82
- static bool hit_lt(FrtHit *hit1, FrtHit *hit2)
83
- {
77
+ static bool hit_lt(FrtHit *hit1, FrtHit *hit2) {
84
78
  if (hit1->score == hit2->score) {
85
79
  return hit1->doc > hit2->doc;
86
80
  } else {
@@ -88,8 +82,7 @@ static bool hit_lt(FrtHit *hit1, FrtHit *hit2)
88
82
  }
89
83
  }
90
84
 
91
- static void hit_pq_down(FrtPriorityQueue *pq)
92
- {
85
+ static void hit_pq_down(FrtPriorityQueue *pq) {
93
86
  register int i = 1;
94
87
  register int j = 2; /* i << 1; */
95
88
  register int k = 3; /* j + 1; */
@@ -112,8 +105,7 @@ static void hit_pq_down(FrtPriorityQueue *pq)
112
105
  heap[i] = node;
113
106
  }
114
107
 
115
- static FrtHit *hit_pq_pop(FrtPriorityQueue *pq)
116
- {
108
+ static FrtHit *hit_pq_pop(FrtPriorityQueue *pq) {
117
109
  if (pq->size > 0) {
118
110
  FrtHit **heap = (FrtHit **)pq->heap;
119
111
  FrtHit *result = heap[1]; /* save first value */
@@ -122,14 +114,12 @@ static FrtHit *hit_pq_pop(FrtPriorityQueue *pq)
122
114
  pq->size--;
123
115
  hit_pq_down(pq); /* adjust heap */
124
116
  return result;
125
- }
126
- else {
117
+ } else {
127
118
  return NULL;
128
119
  }
129
120
  }
130
121
 
131
- static void hit_pq_up(FrtPriorityQueue *pq)
132
- {
122
+ static void hit_pq_up(FrtPriorityQueue *pq) {
133
123
  FrtHit **heap = (FrtHit **)pq->heap;
134
124
  FrtHit *node;
135
125
  int i = pq->size;
@@ -144,8 +134,7 @@ static void hit_pq_up(FrtPriorityQueue *pq)
144
134
  heap[i] = node;
145
135
  }
146
136
 
147
- static void hit_pq_insert(FrtPriorityQueue *pq, FrtHit *hit)
148
- {
137
+ static void hit_pq_insert(FrtPriorityQueue *pq, FrtHit *hit) {
149
138
  if (pq->size < pq->capa) {
150
139
  FrtHit *new_hit = FRT_ALLOC(FrtHit);
151
140
  memcpy(new_hit, hit, sizeof(FrtHit));
@@ -162,8 +151,7 @@ static void hit_pq_insert(FrtPriorityQueue *pq, FrtHit *hit)
162
151
  }
163
152
  }
164
153
 
165
- static void hit_pq_multi_insert(FrtPriorityQueue *pq, FrtHit *hit)
166
- {
154
+ static void hit_pq_multi_insert(FrtPriorityQueue *pq, FrtHit *hit) {
167
155
  hit_pq_insert(pq, hit);
168
156
  free(hit);
169
157
  }
@@ -174,8 +162,7 @@ static void hit_pq_multi_insert(FrtPriorityQueue *pq, FrtHit *hit)
174
162
  *
175
163
  ***************************************************************************/
176
164
 
177
- FrtTopDocs *frt_td_new(int total_hits, int size, FrtHit **hits, float max_score)
178
- {
165
+ FrtTopDocs *frt_td_new(int total_hits, int size, FrtHit **hits, float max_score) {
179
166
  FrtTopDocs *td = FRT_ALLOC(FrtTopDocs);
180
167
  td->total_hits = total_hits;
181
168
  td->size = size;
@@ -184,8 +171,7 @@ FrtTopDocs *frt_td_new(int total_hits, int size, FrtHit **hits, float max_score)
184
171
  return td;
185
172
  }
186
173
 
187
- void frt_td_destroy(FrtTopDocs *td)
188
- {
174
+ void frt_td_destroy(FrtTopDocs *td) {
189
175
  int i;
190
176
 
191
177
  for (i = 0; i < td->size; i++) {
@@ -195,8 +181,7 @@ void frt_td_destroy(FrtTopDocs *td)
195
181
  free(td);
196
182
  }
197
183
 
198
- char *frt_td_to_s(FrtTopDocs *td)
199
- {
184
+ char *frt_td_to_s(FrtTopDocs *td) {
200
185
  int i;
201
186
  FrtHit *hit;
202
187
  char *buffer = frt_strfmt("%d hits sorted by <score, doc_num>\n",
@@ -214,37 +199,31 @@ char *frt_td_to_s(FrtTopDocs *td)
214
199
  *
215
200
  ***************************************************************************/
216
201
 
217
- FrtQuery *frt_w_get_query(FrtWeight *self)
218
- {
202
+ FrtQuery *frt_w_get_query(FrtWeight *self) {
219
203
  return self->query;
220
204
  }
221
205
 
222
- float frt_w_get_value(FrtWeight *self)
223
- {
206
+ float frt_w_get_value(FrtWeight *self) {
224
207
  return self->value;
225
208
  }
226
209
 
227
- float frt_w_sum_of_squared_weights(FrtWeight *self)
228
- {
210
+ float frt_w_sum_of_squared_weights(FrtWeight *self) {
229
211
  self->qweight = self->idf * self->query->boost;
230
212
  return self->qweight * self->qweight; /* square it */
231
213
  }
232
214
 
233
- void frt_w_normalize(FrtWeight *self, float normalization_factor)
234
- {
215
+ void frt_w_normalize(FrtWeight *self, float normalization_factor) {
235
216
  self->qnorm = normalization_factor;
236
217
  self->qweight *= normalization_factor; /* normalize query weight */
237
218
  self->value = self->qweight * self->idf;/* idf for document */
238
219
  }
239
220
 
240
- void frt_w_destroy(FrtWeight *self)
241
- {
221
+ void frt_w_destroy(FrtWeight *self) {
242
222
  frt_q_deref(self->query);
243
223
  free(self);
244
224
  }
245
225
 
246
- FrtWeight *frt_w_create(size_t size, FrtQuery *query)
247
- {
226
+ FrtWeight *frt_w_create(size_t size, FrtQuery *query) {
248
227
  FrtWeight *self = (FrtWeight *)frt_ecalloc(size);
249
228
  #ifdef DEBUG
250
229
  if (size < sizeof(FrtWeight)) {
@@ -294,14 +273,12 @@ static const char *UNKNOWN_QUERY_NAME = "UnkownQuery";
294
273
  const char *frt_q_get_query_name(FrtQueryType type) {
295
274
  if (type >= FRT_NELEMS(QUERY_NAMES)) {
296
275
  return UNKNOWN_QUERY_NAME;
297
- }
298
- else {
276
+ } else {
299
277
  return QUERY_NAMES[type];
300
278
  }
301
279
  }
302
280
 
303
- static FrtQuery *q_rewrite(FrtQuery *self, FrtIndexReader *ir)
304
- {
281
+ static FrtQuery *q_rewrite(FrtQuery *self, FrtIndexReader *ir) {
305
282
  (void)ir;
306
283
  FRT_REF(self);
307
284
  return self;
@@ -469,13 +446,11 @@ int frt_scorer_doc_cmp(const void *p1, const void *p2) {
469
446
  ***************************************************************************/
470
447
 
471
448
  /* ** MatchRange ** */
472
- static int match_range_cmp(const void *p1, const void *p2)
473
- {
449
+ static int match_range_cmp(const void *p1, const void *p2) {
474
450
  int diff = ((FrtMatchRange *)p1)->start - ((FrtMatchRange *)p2)->start;
475
451
  if (diff != 0) {
476
452
  return diff;
477
- }
478
- else {
453
+ } else {
479
454
  return ((FrtMatchRange *)p2)->end - ((FrtMatchRange *)p1)->end;
480
455
  }
481
456
  }
@@ -491,8 +466,7 @@ FrtMatchVector *frt_matchv_new(void) {
491
466
  return matchv;
492
467
  }
493
468
 
494
- FrtMatchVector *frt_matchv_add(FrtMatchVector *self, int start, int end)
495
- {
469
+ FrtMatchVector *frt_matchv_add(FrtMatchVector *self, int start, int end) {
496
470
  if (self->size >= self->capa) {
497
471
  self->capa <<= 1;
498
472
  FRT_REALLOC_N(self->matches, FrtMatchRange, self->capa);
@@ -504,14 +478,12 @@ FrtMatchVector *frt_matchv_add(FrtMatchVector *self, int start, int end)
504
478
  return self;
505
479
  }
506
480
 
507
- FrtMatchVector *frt_matchv_sort(FrtMatchVector *self)
508
- {
481
+ FrtMatchVector *frt_matchv_sort(FrtMatchVector *self) {
509
482
  qsort(self->matches, self->size, sizeof(FrtMatchRange), &match_range_cmp);
510
483
  return self;
511
484
  }
512
485
 
513
- FrtMatchVector *frt_matchv_compact(FrtMatchVector *self)
514
- {
486
+ FrtMatchVector *frt_matchv_compact(FrtMatchVector *self) {
515
487
  int left, right;
516
488
  frt_matchv_sort(self);
517
489
  for (right = left = 0; right < self->size; right++) {
@@ -521,11 +493,9 @@ FrtMatchVector *frt_matchv_compact(FrtMatchVector *self)
521
493
  self->matches[left].start = self->matches[right].start;
522
494
  self->matches[left].end = self->matches[right].end;
523
495
  self->matches[left].score = self->matches[right].score;
524
- }
525
- else if (self->matches[right].end > self->matches[left].end) {
496
+ } else if (self->matches[right].end > self->matches[left].end) {
526
497
  self->matches[left].end = self->matches[right].end;
527
- }
528
- else {
498
+ } else {
529
499
  self->matches[left].score += self->matches[right].score;
530
500
  }
531
501
  }
@@ -533,8 +503,7 @@ FrtMatchVector *frt_matchv_compact(FrtMatchVector *self)
533
503
  return self;
534
504
  }
535
505
 
536
- FrtMatchVector *frt_matchv_compact_with_breaks(FrtMatchVector *self)
537
- {
506
+ FrtMatchVector *frt_matchv_compact_with_breaks(FrtMatchVector *self) {
538
507
  int left, right;
539
508
  frt_matchv_sort(self);
540
509
  for (right = left = 0; right < self->size; right++) {
@@ -544,12 +513,10 @@ FrtMatchVector *frt_matchv_compact_with_breaks(FrtMatchVector *self)
544
513
  self->matches[left].start = self->matches[right].start;
545
514
  self->matches[left].end = self->matches[right].end;
546
515
  self->matches[left].score = self->matches[right].score;
547
- }
548
- else if (self->matches[right].end > self->matches[left].end) {
516
+ } else if (self->matches[right].end > self->matches[left].end) {
549
517
  self->matches[left].end = self->matches[right].end;
550
518
  self->matches[left].score += self->matches[right].score;
551
- }
552
- else if (right > left) {
519
+ } else if (right > left) {
553
520
  self->matches[left].score += self->matches[right].score;
554
521
  }
555
522
  }
@@ -557,8 +524,7 @@ FrtMatchVector *frt_matchv_compact_with_breaks(FrtMatchVector *self)
557
524
  return self;
558
525
  }
559
526
 
560
- static FrtMatchVector *matchv_set_offsets(FrtMatchVector *mv, FrtOffset *offsets)
561
- {
527
+ static FrtMatchVector *matchv_set_offsets(FrtMatchVector *mv, FrtOffset *offsets) {
562
528
  int i;
563
529
  for (i = 0; i < mv->size; i++) {
564
530
  mv->matches[i].start_offset = offsets[mv->matches[i].start].start;
@@ -567,8 +533,7 @@ static FrtMatchVector *matchv_set_offsets(FrtMatchVector *mv, FrtOffset *offsets
567
533
  return mv;
568
534
  }
569
535
 
570
- void frt_matchv_destroy(FrtMatchVector *self)
571
- {
536
+ void frt_matchv_destroy(FrtMatchVector *self) {
572
537
  free(self->matches);
573
538
  free(self);
574
539
  }
@@ -607,8 +572,7 @@ typedef struct Excerpt {
607
572
  } Excerpt;
608
573
 
609
574
  /*
610
- static int excerpt_cmp(const void *p1, const void *p2)
611
- {
575
+ static int excerpt_cmp(const void *p1, const void *p2) {
612
576
  double score1 = (*((Excerpt **)p1))->score;
613
577
  double score2 = (*((Excerpt **)p2))->score;
614
578
  if (score1 > score2) return 1;
@@ -617,18 +581,15 @@ static int excerpt_cmp(const void *p1, const void *p2)
617
581
  }
618
582
  */
619
583
 
620
- static int excerpt_start_cmp(const void *p1, const void *p2)
621
- {
584
+ static int excerpt_start_cmp(const void *p1, const void *p2) {
622
585
  return (*((Excerpt **)p1))->start - (*((Excerpt **)p2))->start;
623
586
  }
624
587
 
625
- static int excerpt_lt(Excerpt *e1, Excerpt *e2)
626
- {
588
+ static int excerpt_lt(Excerpt *e1, Excerpt *e2) {
627
589
  return e1->score > e2->score; /* want the highest score at top */
628
590
  }
629
591
 
630
- static Excerpt *excerpt_new(int start, int end, double score)
631
- {
592
+ static Excerpt *excerpt_new(int start, int end, double score) {
632
593
  Excerpt *excerpt = FRT_ALLOC_AND_ZERO(Excerpt);
633
594
  excerpt->start = start;
634
595
  excerpt->end = end;
@@ -636,8 +597,7 @@ static Excerpt *excerpt_new(int start, int end, double score)
636
597
  return excerpt;
637
598
  }
638
599
 
639
- static Excerpt *excerpt_recalc_score(Excerpt *e, FrtMatchVector *mv)
640
- {
600
+ static Excerpt *excerpt_recalc_score(Excerpt *e, FrtMatchVector *mv) {
641
601
  int i;
642
602
  double score = 0.0;
643
603
  for (i = e->start; i <= e->end; i++) {
@@ -648,8 +608,7 @@ static Excerpt *excerpt_recalc_score(Excerpt *e, FrtMatchVector *mv)
648
608
  }
649
609
 
650
610
  /* expand an excerpt to it's largest possible size */
651
- static Excerpt *excerpt_expand(Excerpt *e, const int len, FrtTermVector *tv)
652
- {
611
+ static Excerpt *excerpt_expand(Excerpt *e, const int len, FrtTermVector *tv) {
653
612
  FrtOffset *offsets = tv->offsets;
654
613
  int offset_cnt = tv->offset_cnt;
655
614
  bool did_expansion = true;
@@ -686,8 +645,7 @@ static char *excerpt_get_str(Excerpt *e, FrtMatchVector *mv,
686
645
  FrtLazyDocField *lazy_df,
687
646
  const char *pre_tag,
688
647
  const char *post_tag,
689
- const char *ellipsis)
690
- {
648
+ const char *ellipsis) {
691
649
  int i, len;
692
650
  int last_offset = e->start_offset;
693
651
  const int num_matches = e->end - e->start + 1;
@@ -742,8 +700,7 @@ static char *highlight_field(FrtMatchVector *mv,
742
700
  FrtLazyDocField *lazy_df,
743
701
  FrtTermVector *tv,
744
702
  const char *pre_tag,
745
- const char *post_tag)
746
- {
703
+ const char *post_tag) {
747
704
  const int pre_len = (int)strlen(pre_tag);
748
705
  const int post_len = (int)strlen(post_tag);
749
706
  char *excerpt_str =
@@ -778,8 +735,7 @@ static char *highlight_field(FrtMatchVector *mv,
778
735
  e_ptr += len;
779
736
  }
780
737
  *e_ptr = '\0';
781
- }
782
- else {
738
+ } else {
783
739
  frt_lazy_df_get_bytes(lazy_df, excerpt_str, 0, lazy_df->len);
784
740
  excerpt_str[lazy_df->len] = '\0';
785
741
  }
@@ -812,8 +768,7 @@ char **frt_searcher_highlight(FrtSearcher *self,
812
768
  excerpt_strs = frt_ary_new_type_capa(char *, 1);
813
769
  frt_ary_push(excerpt_strs,
814
770
  highlight_field(mv, lazy_df, tv, pre_tag, post_tag));
815
- }
816
- else if (mv->size > 0) {
771
+ } else if (mv->size > 0) {
817
772
  Excerpt **excerpts = FRT_ALLOC_AND_ZERO_N(Excerpt *, num_excerpts);
818
773
  int e_start, e_end, i, j;
819
774
  FrtMatchRange *matches = mv->matches;
@@ -915,13 +870,11 @@ char **frt_searcher_highlight(FrtSearcher *self,
915
870
  return excerpt_strs;
916
871
  }
917
872
 
918
- static FrtWeight *sea_create_weight(FrtSearcher *self, FrtQuery *query)
919
- {
873
+ static FrtWeight *sea_create_weight(FrtSearcher *self, FrtQuery *query) {
920
874
  return frt_q_weight(query, self);
921
875
  }
922
876
 
923
- static void sea_check_args(int num_docs, int first_doc)
924
- {
877
+ static void sea_check_args(int num_docs, int first_doc) {
925
878
  if (num_docs <= 0) {
926
879
  FRT_RAISE(FRT_ARG_ERROR, ":num_docs was set to %d but should be greater "
927
880
  "than 0 : %d <= 0", num_docs, num_docs);
@@ -933,8 +886,7 @@ static void sea_check_args(int num_docs, int first_doc)
933
886
  }
934
887
  }
935
888
 
936
- static FrtSimilarity *sea_get_similarity(FrtSearcher *self)
937
- {
889
+ static FrtSimilarity *sea_get_similarity(FrtSearcher *self) {
938
890
  return self->similarity;
939
891
  }
940
892
 
@@ -950,20 +902,17 @@ int frt_isea_doc_freq(FrtSearcher *self, ID field, const char *term) {
950
902
  return frt_ir_doc_freq(ISEA(self)->ir, field, term);
951
903
  }
952
904
 
953
- static FrtDocument *isea_get_doc(FrtSearcher *self, int doc_num)
954
- {
905
+ static FrtDocument *isea_get_doc(FrtSearcher *self, int doc_num) {
955
906
  FrtIndexReader *ir = ISEA(self)->ir;
956
907
  return ir->get_doc(ir, doc_num);
957
908
  }
958
909
 
959
- static FrtLazyDoc *isea_get_lazy_doc(FrtSearcher *self, int doc_num)
960
- {
910
+ static FrtLazyDoc *isea_get_lazy_doc(FrtSearcher *self, int doc_num) {
961
911
  FrtIndexReader *ir = ISEA(self)->ir;
962
912
  return ir->get_lazy_doc(ir, doc_num);
963
913
  }
964
914
 
965
- static int isea_max_doc(FrtSearcher *self)
966
- {
915
+ static int isea_max_doc(FrtSearcher *self) {
967
916
  FrtIndexReader *ir = ISEA(self)->ir;
968
917
  return ir->max_doc(ir);
969
918
  }
@@ -982,8 +931,7 @@ static FrtTopDocs *isea_search_w(FrtSearcher *self,
982
931
  FrtFilter *filter,
983
932
  FrtSort *sort,
984
933
  FrtPostFilter *post_filter,
985
- bool load_fields)
986
- {
934
+ bool load_fields) {
987
935
  int max_size = num_docs + (num_docs == INT_MAX ? 0 : first_doc);
988
936
  int i;
989
937
  int total_hits = 0;
@@ -1066,8 +1014,7 @@ static FrtTopDocs *isea_search(FrtSearcher *self,
1066
1014
  FrtFilter *filter,
1067
1015
  FrtSort *sort,
1068
1016
  FrtPostFilter *post_filter,
1069
- bool load_fields)
1070
- {
1017
+ bool load_fields) {
1071
1018
  FrtTopDocs *td;
1072
1019
  FrtWeight *weight = frt_q_weight(query, self);
1073
1020
  td = isea_search_w(self, weight, first_doc, num_docs, filter, sort, post_filter, load_fields);
@@ -1078,8 +1025,7 @@ static FrtTopDocs *isea_search(FrtSearcher *self,
1078
1025
  static void isea_search_each_w(FrtSearcher *self, FrtWeight *weight, FrtFilter *filter,
1079
1026
  FrtPostFilter *post_filter,
1080
1027
  void (*fn)(FrtSearcher *, int, float, void *),
1081
- void *arg)
1082
- {
1028
+ void *arg) {
1083
1029
  FrtScorer *scorer;
1084
1030
  float filter_factor = 1.0f;
1085
1031
  FrtBitVector *bits = (filter
@@ -1110,8 +1056,7 @@ static void isea_search_each_w(FrtSearcher *self, FrtWeight *weight, FrtFilter *
1110
1056
  static void isea_search_each(FrtSearcher *self, FrtQuery *query, FrtFilter *filter,
1111
1057
  FrtPostFilter *post_filter,
1112
1058
  void (*fn)(FrtSearcher *, int, float, void *),
1113
- void *arg)
1114
- {
1059
+ void *arg) {
1115
1060
  FrtWeight *weight = frt_q_weight(query, self);
1116
1061
  isea_search_each_w(self, weight, filter, post_filter, fn, arg);
1117
1062
  weight->destroy(weight);
@@ -1227,8 +1172,7 @@ FrtSearcher *frt_isea_new(FrtIndexReader *ir) {
1227
1172
  ***************************************************************************/
1228
1173
 
1229
1174
  #define CDFSEA(searcher) ((CachedDFSearcher *)(searcher))
1230
- typedef struct CachedDFSearcher
1231
- {
1175
+ typedef struct CachedDFSearcher {
1232
1176
  FrtSearcher super;
1233
1177
  FrtHash *df_map;
1234
1178
  int max_doc;
@@ -1243,29 +1187,25 @@ static int cdfsea_doc_freq(FrtSearcher *self, ID field, const char *text) {
1243
1187
  return df ? *df : 0;
1244
1188
  }
1245
1189
 
1246
- static FrtDocument *cdfsea_get_doc(FrtSearcher *self, int doc_num)
1247
- {
1190
+ static FrtDocument *cdfsea_get_doc(FrtSearcher *self, int doc_num) {
1248
1191
  (void)self; (void)doc_num;
1249
1192
  FRT_RAISE(FRT_UNSUPPORTED_ERROR, "%s", FRT_UNSUPPORTED_ERROR_MSG);
1250
1193
  return NULL;
1251
1194
  }
1252
1195
 
1253
- static int cdfsea_max_doc(FrtSearcher *self)
1254
- {
1196
+ static int cdfsea_max_doc(FrtSearcher *self) {
1255
1197
  (void)self;
1256
1198
  return CDFSEA(self)->max_doc;
1257
1199
  }
1258
1200
 
1259
- static FrtWeight *cdfsea_create_weight(FrtSearcher *self, FrtQuery *query)
1260
- {
1201
+ static FrtWeight *cdfsea_create_weight(FrtSearcher *self, FrtQuery *query) {
1261
1202
  (void)self; (void)query;
1262
1203
  FRT_RAISE(FRT_UNSUPPORTED_ERROR, "%s", FRT_UNSUPPORTED_ERROR_MSG);
1263
1204
  return NULL;
1264
1205
  }
1265
1206
 
1266
1207
  static FrtTopDocs *cdfsea_search_w(FrtSearcher *self, FrtWeight *w, int fd, int nd,
1267
- FrtFilter *f, FrtSort *s, FrtPostFilter *pf, bool load)
1268
- {
1208
+ FrtFilter *f, FrtSort *s, FrtPostFilter *pf, bool load) {
1269
1209
  (void)self; (void)w; (void)fd; (void)nd;
1270
1210
  (void)f; (void)s; (void)pf; (void)load;
1271
1211
  FRT_RAISE(FRT_UNSUPPORTED_ERROR, "%s", FRT_UNSUPPORTED_ERROR_MSG);
@@ -1273,8 +1213,7 @@ static FrtTopDocs *cdfsea_search_w(FrtSearcher *self, FrtWeight *w, int fd, int
1273
1213
  }
1274
1214
 
1275
1215
  static FrtTopDocs *cdfsea_search(FrtSearcher *self, FrtQuery *q, int fd, int nd,
1276
- FrtFilter *f, FrtSort *s, FrtPostFilter *pf, bool load)
1277
- {
1216
+ FrtFilter *f, FrtSort *s, FrtPostFilter *pf, bool load) {
1278
1217
  (void)self; (void)q; (void)fd; (void)nd;
1279
1218
  (void)f; (void)s; (void)pf; (void)load;
1280
1219
  FRT_RAISE(FRT_UNSUPPORTED_ERROR, "%s", FRT_UNSUPPORTED_ERROR_MSG);
@@ -1284,8 +1223,7 @@ static FrtTopDocs *cdfsea_search(FrtSearcher *self, FrtQuery *q, int fd, int nd,
1284
1223
  static void cdfsea_search_each(FrtSearcher *self, FrtQuery *query, FrtFilter *filter,
1285
1224
  FrtPostFilter *pf,
1286
1225
  void (*fn)(FrtSearcher *, int, float, void *),
1287
- void *arg)
1288
- {
1226
+ void *arg) {
1289
1227
  (void)self; (void)query; (void)filter; (void)pf; (void)fn; (void)arg;
1290
1228
  FRT_RAISE(FRT_UNSUPPORTED_ERROR, "%s", FRT_UNSUPPORTED_ERROR_MSG);
1291
1229
  }
@@ -1293,28 +1231,24 @@ static void cdfsea_search_each(FrtSearcher *self, FrtQuery *query, FrtFilter *fi
1293
1231
  static void cdfsea_search_each_w(FrtSearcher *self, FrtWeight *w, FrtFilter *filter,
1294
1232
  FrtPostFilter *pf,
1295
1233
  void (*fn)(FrtSearcher *, int, float, void *),
1296
- void *arg)
1297
- {
1234
+ void *arg) {
1298
1235
  (void)self; (void)w; (void)filter; (void)pf; (void)fn; (void)arg;
1299
1236
  FRT_RAISE(FRT_UNSUPPORTED_ERROR, "%s", FRT_UNSUPPORTED_ERROR_MSG);
1300
1237
  }
1301
1238
 
1302
- static FrtQuery *cdfsea_rewrite(FrtSearcher *self, FrtQuery *original)
1303
- {
1239
+ static FrtQuery *cdfsea_rewrite(FrtSearcher *self, FrtQuery *original) {
1304
1240
  (void)self;
1305
1241
  FRT_REF(original);
1306
1242
  return original;
1307
1243
  }
1308
1244
 
1309
- static FrtExplanation *cdfsea_explain(FrtSearcher *self, FrtQuery *query, int doc_num)
1310
- {
1245
+ static FrtExplanation *cdfsea_explain(FrtSearcher *self, FrtQuery *query, int doc_num) {
1311
1246
  (void)self; (void)query; (void)doc_num;
1312
1247
  FRT_RAISE(FRT_UNSUPPORTED_ERROR, "%s", FRT_UNSUPPORTED_ERROR_MSG);
1313
1248
  return NULL;
1314
1249
  }
1315
1250
 
1316
- static FrtExplanation *cdfsea_explain_w(FrtSearcher *self, FrtWeight *w, int doc_num)
1317
- {
1251
+ static FrtExplanation *cdfsea_explain_w(FrtSearcher *self, FrtWeight *w, int doc_num) {
1318
1252
  (void)self; (void)w; (void)doc_num;
1319
1253
  FRT_RAISE(FRT_UNSUPPORTED_ERROR, "%s", FRT_UNSUPPORTED_ERROR_MSG);
1320
1254
  return NULL;
@@ -1326,19 +1260,16 @@ static FrtTermVector *cdfsea_get_term_vector(FrtSearcher *self, const int doc_nu
1326
1260
  return NULL;
1327
1261
  }
1328
1262
 
1329
- static FrtSimilarity *cdfsea_get_similarity(FrtSearcher *self)
1330
- {
1263
+ static FrtSimilarity *cdfsea_get_similarity(FrtSearcher *self) {
1331
1264
  return self->similarity;
1332
1265
  }
1333
1266
 
1334
- static void cdfsea_close(FrtSearcher *self)
1335
- {
1267
+ static void cdfsea_close(FrtSearcher *self) {
1336
1268
  frt_h_destroy(CDFSEA(self)->df_map);
1337
1269
  free(self);
1338
1270
  }
1339
1271
 
1340
- static FrtSearcher *cdfsea_new(FrtHash *df_map, int max_doc)
1341
- {
1272
+ static FrtSearcher *cdfsea_new(FrtHash *df_map, int max_doc) {
1342
1273
  FrtSearcher *self = (FrtSearcher *)FRT_ALLOC(CachedDFSearcher);
1343
1274
 
1344
1275
  CDFSEA(self)->df_map = df_map;
@@ -1369,8 +1300,7 @@ static FrtSearcher *cdfsea_new(FrtHash *df_map, int max_doc)
1369
1300
  ***************************************************************************/
1370
1301
 
1371
1302
  #define MSEA(searcher) ((FrtMultiSearcher *)(searcher))
1372
- static int msea_get_searcher_index(FrtSearcher *self, int n)
1373
- {
1303
+ static int msea_get_searcher_index(FrtSearcher *self, int n) {
1374
1304
  FrtMultiSearcher *msea = MSEA(self);
1375
1305
  int lo = 0; /* search starts array */
1376
1306
  int hi = msea->s_cnt - 1; /* for 1st element < n, return its index */
@@ -1381,11 +1311,9 @@ static int msea_get_searcher_index(FrtSearcher *self, int n)
1381
1311
  mid_val = msea->starts[mid];
1382
1312
  if (n < mid_val) {
1383
1313
  hi = mid - 1;
1384
- }
1385
- else if (n > mid_val) {
1314
+ } else if (n > mid_val) {
1386
1315
  lo = mid + 1;
1387
- }
1388
- else { /* found a match */
1316
+ } else { /* found a match */
1389
1317
  while (((mid+1) < msea->s_cnt)
1390
1318
  && (msea->starts[mid+1] == mid_val)) {
1391
1319
  mid++; /* scan to last match */
@@ -1408,29 +1336,25 @@ static int msea_doc_freq(FrtSearcher *self, ID field, const char *term) {
1408
1336
  return doc_freq;
1409
1337
  }
1410
1338
 
1411
- static FrtDocument *msea_get_doc(FrtSearcher *self, int doc_num)
1412
- {
1339
+ static FrtDocument *msea_get_doc(FrtSearcher *self, int doc_num) {
1413
1340
  FrtMultiSearcher *msea = MSEA(self);
1414
1341
  int i = msea_get_searcher_index(self, doc_num);
1415
1342
  FrtSearcher *s = msea->searchers[i];
1416
1343
  return s->get_doc(s, doc_num - msea->starts[i]);
1417
1344
  }
1418
1345
 
1419
- static FrtLazyDoc *msea_get_lazy_doc(FrtSearcher *self, int doc_num)
1420
- {
1346
+ static FrtLazyDoc *msea_get_lazy_doc(FrtSearcher *self, int doc_num) {
1421
1347
  FrtMultiSearcher *msea = MSEA(self);
1422
1348
  int i = msea_get_searcher_index(self, doc_num);
1423
1349
  FrtSearcher *s = msea->searchers[i];
1424
1350
  return s->get_lazy_doc(s, doc_num - msea->starts[i]);
1425
1351
  }
1426
1352
 
1427
- static int msea_max_doc(FrtSearcher *self)
1428
- {
1353
+ static int msea_max_doc(FrtSearcher *self) {
1429
1354
  return MSEA(self)->max_doc;
1430
1355
  }
1431
1356
 
1432
- static int *msea_get_doc_freqs(FrtSearcher *self, FrtHashSet *terms)
1433
- {
1357
+ static int *msea_get_doc_freqs(FrtSearcher *self, FrtHashSet *terms) {
1434
1358
  int i;
1435
1359
  FrtHashSetEntry *hse;
1436
1360
  int *doc_freqs = FRT_ALLOC_N(int, terms->size);
@@ -1441,8 +1365,7 @@ static int *msea_get_doc_freqs(FrtSearcher *self, FrtHashSet *terms)
1441
1365
  return doc_freqs;
1442
1366
  }
1443
1367
 
1444
- static FrtWeight *msea_create_weight(FrtSearcher *self, FrtQuery *query)
1445
- {
1368
+ static FrtWeight *msea_create_weight(FrtSearcher *self, FrtQuery *query) {
1446
1369
  int i, *doc_freqs;
1447
1370
  FrtSearcher *cdfsea;
1448
1371
  FrtWeight *w;
@@ -1481,8 +1404,7 @@ struct MultiSearchEachArg {
1481
1404
  void (*fn)(FrtSearcher *, int, float, void *);
1482
1405
  };
1483
1406
 
1484
- static void msea_search_each_i(FrtSearcher *self, int doc_num, float score, void *arg)
1485
- {
1407
+ static void msea_search_each_i(FrtSearcher *self, int doc_num, float score, void *arg) {
1486
1408
  struct MultiSearchEachArg *mse_arg = (struct MultiSearchEachArg *)arg;
1487
1409
 
1488
1410
  mse_arg->fn(self, doc_num + mse_arg->start, score, mse_arg->arg);
@@ -1491,8 +1413,7 @@ static void msea_search_each_i(FrtSearcher *self, int doc_num, float score, void
1491
1413
  static void msea_search_each_w(FrtSearcher *self, FrtWeight *w, FrtFilter *filter,
1492
1414
  FrtPostFilter *post_filter,
1493
1415
  void (*fn)(FrtSearcher *, int, float, void *),
1494
- void *arg)
1495
- {
1416
+ void *arg) {
1496
1417
  int i;
1497
1418
  struct MultiSearchEachArg mse_arg;
1498
1419
  FrtMultiSearcher *msea = MSEA(self);
@@ -1511,8 +1432,7 @@ static void msea_search_each_w(FrtSearcher *self, FrtWeight *w, FrtFilter *filte
1511
1432
  static void msea_search_each(FrtSearcher *self, FrtQuery *query, FrtFilter *filter,
1512
1433
  FrtPostFilter *post_filter,
1513
1434
  void (*fn)(FrtSearcher *, int, float, void *),
1514
- void *arg)
1515
- {
1435
+ void *arg) {
1516
1436
  FrtWeight *weight = frt_q_weight(query, self);
1517
1437
  msea_search_each_w(self, weight, filter, post_filter, fn, arg);
1518
1438
  weight->destroy(weight);
@@ -1522,8 +1442,7 @@ static int msea_search_unscored_w(FrtSearcher *self,
1522
1442
  FrtWeight *w,
1523
1443
  int *buf,
1524
1444
  int limit,
1525
- int offset_docnum)
1526
- {
1445
+ int offset_docnum) {
1527
1446
  int i, count = 0;
1528
1447
  FrtMultiSearcher *msea = MSEA(self);
1529
1448
 
@@ -1574,8 +1493,7 @@ struct MultiSearchArg {
1574
1493
 
1575
1494
  /*
1576
1495
  * FIXME Not used anywhere. Is it needed?
1577
- static void msea_search_i(FrtSearcher *self, int doc_num, float score, void *arg)
1578
- {
1496
+ static void msea_search_i(FrtSearcher *self, int doc_num, float score, void *arg) {
1579
1497
  struct MultiSearchArg *ms_arg = (struct MultiSearchArg *)arg;
1580
1498
  FrtHit hit;
1581
1499
  (void)self;