isomorfeus-ferret 0.17.2 → 0.17.3

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -89,8 +89,7 @@ static bool dssc_advance_after_current(FrtScorer *self) {
89
89
  while (true) {
90
90
  if (top->next(top)) {
91
91
  frt_pq_down(scorer_queue);
92
- }
93
- else {
92
+ } else {
94
93
  frt_pq_pop(scorer_queue);
95
94
  if (scorer_queue->size
96
95
  < (dssc->min_num_matches - dssc->num_matches)) {
@@ -107,8 +106,7 @@ static bool dssc_advance_after_current(FrtScorer *self) {
107
106
  if (top->doc != self->doc) {
108
107
  /* All remaining subscorers are after self->doc */
109
108
  break;
110
- }
111
- else {
109
+ } else {
112
110
  dssc->cum_score += top->score(top);
113
111
  dssc->num_matches++;
114
112
  }
@@ -116,8 +114,7 @@ static bool dssc_advance_after_current(FrtScorer *self) {
116
114
 
117
115
  if (dssc->num_matches >= dssc->min_num_matches) {
118
116
  return true;
119
- }
120
- else if (scorer_queue->size < dssc->min_num_matches) {
117
+ } else if (scorer_queue->size < dssc->min_num_matches) {
121
118
  return false;
122
119
  }
123
120
  }
@@ -130,8 +127,7 @@ static bool dssc_next(FrtScorer *self) {
130
127
 
131
128
  if (DSSc(self)->scorer_queue->size < DSSc(self)->min_num_matches) {
132
129
  return false;
133
- }
134
- else {
130
+ } else {
135
131
  return dssc_advance_after_current(self);
136
132
  }
137
133
  }
@@ -155,11 +151,9 @@ static bool dssc_skip_to(FrtScorer *self, int doc_num) {
155
151
  FrtScorer *top = (FrtScorer *)frt_pq_top(scorer_queue);
156
152
  if (top->doc >= doc_num) {
157
153
  return dssc_advance_after_current(self);
158
- }
159
- else if (top->skip_to(top, doc_num)) {
154
+ } else if (top->skip_to(top, doc_num)) {
160
155
  frt_pq_down(scorer_queue);
161
- }
162
- else {
156
+ } else {
163
157
  frt_pq_pop(scorer_queue);
164
158
  if (scorer_queue->size < dssc->min_num_matches) {
165
159
  return false;
@@ -168,8 +162,7 @@ static bool dssc_skip_to(FrtScorer *self, int doc_num) {
168
162
  }
169
163
  }
170
164
 
171
- static FrtExplanation *dssc_explain(FrtScorer *self, int doc_num)
172
- {
165
+ static FrtExplanation *dssc_explain(FrtScorer *self, int doc_num) {
173
166
  int i;
174
167
  DisjunctionSumScorer *dssc = DSSc(self);
175
168
  FrtScorer *sub_scorer;
@@ -182,8 +175,7 @@ static FrtExplanation *dssc_explain(FrtScorer *self, int doc_num)
182
175
  return e;
183
176
  }
184
177
 
185
- static void dssc_destroy(FrtScorer *self)
186
- {
178
+ static void dssc_destroy(FrtScorer *self) {
187
179
  DisjunctionSumScorer *dssc = DSSc(self);
188
180
  int i;
189
181
  for (i = 0; i < dssc->ss_cnt; i++) {
@@ -196,8 +188,7 @@ static void dssc_destroy(FrtScorer *self)
196
188
  }
197
189
 
198
190
  static FrtScorer *disjunction_sum_scorer_new(FrtScorer **sub_scorers, int ss_cnt,
199
- int min_num_matches)
200
- {
191
+ int min_num_matches) {
201
192
  FrtScorer *self = frt_scorer_new(DisjunctionSumScorer, NULL);
202
193
  DSSc(self)->ss_cnt = ss_cnt;
203
194
 
@@ -233,16 +224,14 @@ static FrtScorer *disjunction_sum_scorer_new(FrtScorer **sub_scorers, int ss_cnt
233
224
  return self;
234
225
  }
235
226
 
236
- static float cdssc_score(FrtScorer *self)
237
- {
227
+ static float cdssc_score(FrtScorer *self) {
238
228
  DSSc(self)->coordinator->num_matches += DSSc(self)->num_matches;
239
229
  return DSSc(self)->cum_score;
240
230
  }
241
231
 
242
232
  static FrtScorer *counting_disjunction_sum_scorer_new(
243
233
  Coordinator *coordinator, FrtScorer **sub_scorers, int ss_cnt,
244
- int min_num_matches)
245
- {
234
+ int min_num_matches) {
246
235
  FrtScorer *self = disjunction_sum_scorer_new(sub_scorers, ss_cnt,
247
236
  min_num_matches);
248
237
  DSSc(self)->coordinator = coordinator;
@@ -256,8 +245,7 @@ static FrtScorer *counting_disjunction_sum_scorer_new(
256
245
 
257
246
  #define CSc(scorer) ((ConjunctionScorer *)(scorer))
258
247
 
259
- typedef struct ConjunctionScorer
260
- {
248
+ typedef struct ConjunctionScorer {
261
249
  FrtScorer super;
262
250
  bool first_time : 1;
263
251
  bool more : 1;
@@ -269,8 +257,7 @@ typedef struct ConjunctionScorer
269
257
  int last_scored_doc;
270
258
  } ConjunctionScorer;
271
259
 
272
- static void csc_sort_scorers(ConjunctionScorer *csc)
273
- {
260
+ static void csc_sort_scorers(ConjunctionScorer *csc) {
274
261
  int i;
275
262
  FrtScorer *current = csc->sub_scorers[0], *previous;
276
263
  for (i = 1; i < csc->ss_cnt; i++) {
@@ -287,8 +274,7 @@ static void csc_sort_scorers(ConjunctionScorer *csc)
287
274
  csc->first_idx = 0;
288
275
  }
289
276
 
290
- static void csc_init(FrtScorer *self, bool init_scorers)
291
- {
277
+ static void csc_init(FrtScorer *self, bool init_scorers) {
292
278
  ConjunctionScorer *csc = CSc(self);
293
279
  const int sub_sc_cnt = csc->ss_cnt;
294
280
 
@@ -315,8 +301,7 @@ static void csc_init(FrtScorer *self, bool init_scorers)
315
301
  csc->first_time = false;
316
302
  }
317
303
 
318
- static float csc_score(FrtScorer *self)
319
- {
304
+ static float csc_score(FrtScorer *self) {
320
305
  ConjunctionScorer *csc = CSc(self);
321
306
  const int sub_sc_cnt = csc->ss_cnt;
322
307
  float score = 0.0f; /* sum scores */
@@ -329,8 +314,7 @@ static float csc_score(FrtScorer *self)
329
314
  return score;
330
315
  }
331
316
 
332
- static bool csc_do_next(FrtScorer *self)
333
- {
317
+ static bool csc_do_next(FrtScorer *self) {
334
318
  ConjunctionScorer *csc = CSc(self);
335
319
  const int sub_sc_cnt = csc->ss_cnt;
336
320
  int first_idx = csc->first_idx;
@@ -351,13 +335,11 @@ static bool csc_do_next(FrtScorer *self)
351
335
  return csc->more;
352
336
  }
353
337
 
354
- static bool csc_next(FrtScorer *self)
355
- {
338
+ static bool csc_next(FrtScorer *self) {
356
339
  ConjunctionScorer *csc = CSc(self);
357
340
  if (csc->first_time) {
358
341
  csc_init(self, true);
359
- }
360
- else if (csc->more) {
342
+ } else if (csc->more) {
361
343
  /* trigger further scanning */
362
344
  const int last_idx = FRT_PREV_NUM(csc->first_idx, csc->ss_cnt);
363
345
  FrtScorer *sub_scorer = csc->sub_scorers[last_idx];
@@ -366,8 +348,7 @@ static bool csc_next(FrtScorer *self)
366
348
  return csc_do_next(self);
367
349
  }
368
350
 
369
- static bool csc_skip_to(FrtScorer *self, int doc_num)
370
- {
351
+ static bool csc_skip_to(FrtScorer *self, int doc_num) {
371
352
  ConjunctionScorer *csc = CSc(self);
372
353
  const int sub_sc_cnt = csc->ss_cnt;
373
354
  int i;
@@ -380,8 +361,7 @@ static bool csc_skip_to(FrtScorer *self, int doc_num)
380
361
  for (i = 0; i < sub_sc_cnt; i++) {
381
362
  if (!more) {
382
363
  break;
383
- }
384
- else {
364
+ } else {
385
365
  FrtScorer *sub_scorer = csc->sub_scorers[i];
386
366
  more = sub_scorer->skip_to(sub_scorer, doc_num);
387
367
  }
@@ -395,8 +375,7 @@ static bool csc_skip_to(FrtScorer *self, int doc_num)
395
375
  return csc_do_next(self);
396
376
  }
397
377
 
398
- static void csc_destroy(FrtScorer *self)
399
- {
378
+ static void csc_destroy(FrtScorer *self) {
400
379
  ConjunctionScorer *csc = CSc(self);
401
380
  const int sub_sc_cnt = csc->ss_cnt;
402
381
  int i;
@@ -407,8 +386,7 @@ static void csc_destroy(FrtScorer *self)
407
386
  frt_scorer_destroy_i(self);
408
387
  }
409
388
 
410
- static FrtScorer *conjunction_scorer_new(FrtSimilarity *similarity)
411
- {
389
+ static FrtScorer *conjunction_scorer_new(FrtSimilarity *similarity) {
412
390
  FrtScorer *self = frt_scorer_new(ConjunctionScorer, similarity);
413
391
 
414
392
  CSc(self)->first_time = true;
@@ -423,8 +401,7 @@ static FrtScorer *conjunction_scorer_new(FrtSimilarity *similarity)
423
401
  return self;
424
402
  }
425
403
 
426
- static float ccsc_score(FrtScorer *self)
427
- {
404
+ static float ccsc_score(FrtScorer *self) {
428
405
  ConjunctionScorer *csc = CSc(self);
429
406
 
430
407
  int doc;
@@ -437,8 +414,7 @@ static float ccsc_score(FrtScorer *self)
437
414
  }
438
415
 
439
416
  static FrtScorer *counting_conjunction_sum_scorer_new(
440
- Coordinator *coordinator, FrtScorer **sub_scorers, int ss_cnt)
441
- {
417
+ Coordinator *coordinator, FrtScorer **sub_scorers, int ss_cnt) {
442
418
  FrtScorer *self = conjunction_scorer_new(frt_sim_create_default());
443
419
  ConjunctionScorer *csc = CSc(self);
444
420
  csc->coordinator = coordinator;
@@ -458,22 +434,19 @@ static FrtScorer *counting_conjunction_sum_scorer_new(
458
434
 
459
435
  #define SMSc(scorer) ((SingleMatchScorer *)(scorer))
460
436
 
461
- typedef struct SingleMatchScorer
462
- {
437
+ typedef struct SingleMatchScorer {
463
438
  FrtScorer super;
464
439
  Coordinator *coordinator;
465
440
  FrtScorer *scorer;
466
441
  } SingleMatchScorer;
467
442
 
468
443
 
469
- static float smsc_score(FrtScorer *self)
470
- {
444
+ static float smsc_score(FrtScorer *self) {
471
445
  SMSc(self)->coordinator->num_matches++;
472
446
  return SMSc(self)->scorer->score(SMSc(self)->scorer);
473
447
  }
474
448
 
475
- static bool smsc_next(FrtScorer *self)
476
- {
449
+ static bool smsc_next(FrtScorer *self) {
477
450
  FrtScorer *scorer = SMSc(self)->scorer;
478
451
  if (scorer->next(scorer)) {
479
452
  self->doc = scorer->doc;
@@ -482,8 +455,7 @@ static bool smsc_next(FrtScorer *self)
482
455
  return false;
483
456
  }
484
457
 
485
- static bool smsc_skip_to(FrtScorer *self, int doc_num)
486
- {
458
+ static bool smsc_skip_to(FrtScorer *self, int doc_num) {
487
459
  FrtScorer *scorer = SMSc(self)->scorer;
488
460
  if (scorer->skip_to(scorer, doc_num)) {
489
461
  self->doc = scorer->doc;
@@ -492,22 +464,18 @@ static bool smsc_skip_to(FrtScorer *self, int doc_num)
492
464
  return false;
493
465
  }
494
466
 
495
- static FrtExplanation *smsc_explain(FrtScorer *self, int doc_num)
496
- {
467
+ static FrtExplanation *smsc_explain(FrtScorer *self, int doc_num) {
497
468
  FrtScorer *scorer = SMSc(self)->scorer;
498
469
  return scorer->explain(scorer, doc_num);
499
470
  }
500
471
 
501
- static void smsc_destroy(FrtScorer *self)
502
- {
472
+ static void smsc_destroy(FrtScorer *self) {
503
473
  FrtScorer *scorer = SMSc(self)->scorer;
504
474
  scorer->destroy(scorer);
505
475
  frt_scorer_destroy_i(self);
506
476
  }
507
477
 
508
- static FrtScorer *single_match_scorer_new(Coordinator *coordinator,
509
- FrtScorer *scorer)
510
- {
478
+ static FrtScorer *single_match_scorer_new(Coordinator *coordinator, FrtScorer *scorer) {
511
479
  FrtScorer *self = frt_scorer_new(SingleMatchScorer, scorer->similarity);
512
480
  SMSc(self)->coordinator = coordinator;
513
481
  SMSc(self)->scorer = scorer;
@@ -526,16 +494,14 @@ static FrtScorer *single_match_scorer_new(Coordinator *coordinator,
526
494
 
527
495
  #define ROSSc(scorer) ((ReqOptSumScorer *)(scorer))
528
496
 
529
- typedef struct ReqOptSumScorer
530
- {
497
+ typedef struct ReqOptSumScorer {
531
498
  FrtScorer super;
532
499
  FrtScorer *req_scorer;
533
500
  FrtScorer *opt_scorer;
534
501
  bool first_time_opt;
535
502
  } ReqOptSumScorer;
536
503
 
537
- static float rossc_score(FrtScorer *self)
538
- {
504
+ static float rossc_score(FrtScorer *self) {
539
505
  ReqOptSumScorer *rossc = ROSSc(self);
540
506
  FrtScorer *req_scorer = rossc->req_scorer;
541
507
  FrtScorer *opt_scorer = rossc->opt_scorer;
@@ -548,11 +514,9 @@ static float rossc_score(FrtScorer *self)
548
514
  FRT_SCORER_NULLIFY(rossc->opt_scorer);
549
515
  return req_score;
550
516
  }
551
- }
552
- else if (opt_scorer == NULL) {
517
+ } else if (opt_scorer == NULL) {
553
518
  return req_score;
554
- }
555
- else if ((opt_scorer->doc < cur_doc)
519
+ } else if ((opt_scorer->doc < cur_doc)
556
520
  && ! opt_scorer->skip_to(opt_scorer, cur_doc)) {
557
521
  FRT_SCORER_NULLIFY(rossc->opt_scorer);
558
522
  return req_score;
@@ -563,8 +527,7 @@ static float rossc_score(FrtScorer *self)
563
527
  : req_score;
564
528
  }
565
529
 
566
- static bool rossc_next(FrtScorer *self)
567
- {
530
+ static bool rossc_next(FrtScorer *self) {
568
531
  FrtScorer *req_scorer = ROSSc(self)->req_scorer;
569
532
  if (req_scorer->next(req_scorer)) {
570
533
  self->doc = req_scorer->doc;
@@ -573,8 +536,7 @@ static bool rossc_next(FrtScorer *self)
573
536
  return false;
574
537
  }
575
538
 
576
- static bool rossc_skip_to(FrtScorer *self, int doc_num)
577
- {
539
+ static bool rossc_skip_to(FrtScorer *self, int doc_num) {
578
540
  FrtScorer *req_scorer = ROSSc(self)->req_scorer;
579
541
  if (req_scorer->skip_to(req_scorer, doc_num)) {
580
542
  self->doc = req_scorer->doc;
@@ -583,8 +545,7 @@ static bool rossc_skip_to(FrtScorer *self, int doc_num)
583
545
  return false;
584
546
  }
585
547
 
586
- static FrtExplanation *rossc_explain(FrtScorer *self, int doc_num)
587
- {
548
+ static FrtExplanation *rossc_explain(FrtScorer *self, int doc_num) {
588
549
  FrtScorer *req_scorer = ROSSc(self)->req_scorer;
589
550
  FrtScorer *opt_scorer = ROSSc(self)->opt_scorer;
590
551
 
@@ -594,8 +555,7 @@ static FrtExplanation *rossc_explain(FrtScorer *self, int doc_num)
594
555
  return e;
595
556
  }
596
557
 
597
- static void rossc_destroy(FrtScorer *self)
598
- {
558
+ static void rossc_destroy(FrtScorer *self) {
599
559
  ReqOptSumScorer *rossc = ROSSc(self);
600
560
  if (rossc->req_scorer) {
601
561
  rossc->req_scorer->destroy(rossc->req_scorer);
@@ -607,8 +567,7 @@ static void rossc_destroy(FrtScorer *self)
607
567
  }
608
568
 
609
569
 
610
- static FrtScorer *req_opt_sum_scorer_new(FrtScorer *req_scorer, FrtScorer *opt_scorer)
611
- {
570
+ static FrtScorer *req_opt_sum_scorer_new(FrtScorer *req_scorer, FrtScorer *opt_scorer) {
612
571
  FrtScorer *self = frt_scorer_new(ReqOptSumScorer, NULL);
613
572
 
614
573
  ROSSc(self)->req_scorer = req_scorer;
@@ -629,16 +588,14 @@ static FrtScorer *req_opt_sum_scorer_new(FrtScorer *req_scorer, FrtScorer *opt_s
629
588
  ***************************************************************************/
630
589
 
631
590
  #define RXSc(scorer) ((ReqExclScorer *)(scorer))
632
- typedef struct ReqExclScorer
633
- {
591
+ typedef struct ReqExclScorer {
634
592
  FrtScorer super;
635
593
  FrtScorer *req_scorer;
636
594
  FrtScorer *excl_scorer;
637
595
  bool first_time;
638
596
  } ReqExclScorer;
639
597
 
640
- static bool rxsc_to_non_excluded(FrtScorer *self)
641
- {
598
+ static bool rxsc_to_non_excluded(FrtScorer *self) {
642
599
  FrtScorer *req_scorer = RXSc(self)->req_scorer;
643
600
  FrtScorer *excl_scorer = RXSc(self)->excl_scorer;
644
601
  int excl_doc = excl_scorer->doc, req_doc;
@@ -650,8 +607,7 @@ static bool rxsc_to_non_excluded(FrtScorer *self)
650
607
  /* req_scorer advanced to before excl_scorer, ie. not excluded */
651
608
  self->doc = req_doc;
652
609
  return true;
653
- }
654
- else if (req_doc > excl_doc) {
610
+ } else if (req_doc > excl_doc) {
655
611
  if (! excl_scorer->skip_to(excl_scorer, req_doc)) {
656
612
  /* emptied, no more exclusions */
657
613
  FRT_SCORER_NULLIFY(RXSc(self)->excl_scorer);
@@ -670,8 +626,7 @@ static bool rxsc_to_non_excluded(FrtScorer *self)
670
626
  return false;
671
627
  }
672
628
 
673
- static bool rxsc_next(FrtScorer *self)
674
- {
629
+ static bool rxsc_next(FrtScorer *self) {
675
630
  ReqExclScorer *rxsc = RXSc(self);
676
631
  FrtScorer *req_scorer = rxsc->req_scorer;
677
632
  FrtScorer *excl_scorer = rxsc->excl_scorer;
@@ -700,8 +655,7 @@ static bool rxsc_next(FrtScorer *self)
700
655
  return rxsc_to_non_excluded(self);
701
656
  }
702
657
 
703
- static bool rxsc_skip_to(FrtScorer *self, int doc_num)
704
- {
658
+ static bool rxsc_skip_to(FrtScorer *self, int doc_num) {
705
659
  ReqExclScorer *rxsc = RXSc(self);
706
660
  FrtScorer *req_scorer = rxsc->req_scorer;
707
661
  FrtScorer *excl_scorer = rxsc->excl_scorer;
@@ -731,14 +685,12 @@ static bool rxsc_skip_to(FrtScorer *self, int doc_num)
731
685
  return rxsc_to_non_excluded(self);
732
686
  }
733
687
 
734
- static float rxsc_score(FrtScorer *self)
735
- {
688
+ static float rxsc_score(FrtScorer *self) {
736
689
  FrtScorer *req_scorer = RXSc(self)->req_scorer;
737
690
  return req_scorer->score(req_scorer);
738
691
  }
739
692
 
740
- static FrtExplanation *rxsc_explain(FrtScorer *self, int doc_num)
741
- {
693
+ static FrtExplanation *rxsc_explain(FrtScorer *self, int doc_num) {
742
694
  ReqExclScorer *rxsc = RXSc(self);
743
695
  FrtScorer *req_scorer = rxsc->req_scorer;
744
696
  FrtScorer *excl_scorer = rxsc->excl_scorer;
@@ -747,16 +699,14 @@ static FrtExplanation *rxsc_explain(FrtScorer *self, int doc_num)
747
699
  if (excl_scorer->skip_to(excl_scorer, doc_num)
748
700
  && excl_scorer->doc == doc_num) {
749
701
  e = frt_expl_new(0.0, "excluded:");
750
- }
751
- else {
702
+ } else {
752
703
  e = frt_expl_new(0.0, "not excluded:");
753
704
  frt_expl_add_detail(e, req_scorer->explain(req_scorer, doc_num));
754
705
  }
755
706
  return e;
756
707
  }
757
708
 
758
- static void rxsc_destroy(FrtScorer *self)
759
- {
709
+ static void rxsc_destroy(FrtScorer *self) {
760
710
  ReqExclScorer *rxsc = RXSc(self);
761
711
  if (rxsc->req_scorer) {
762
712
  rxsc->req_scorer->destroy(rxsc->req_scorer);
@@ -767,8 +717,7 @@ static void rxsc_destroy(FrtScorer *self)
767
717
  frt_scorer_destroy_i(self);
768
718
  }
769
719
 
770
- static FrtScorer *req_excl_scorer_new(FrtScorer *req_scorer, FrtScorer *excl_scorer)
771
- {
720
+ static FrtScorer *req_excl_scorer_new(FrtScorer *req_scorer, FrtScorer *excl_scorer) {
772
721
  FrtScorer *self = frt_scorer_new(ReqExclScorer, NULL);
773
722
  RXSc(self)->req_scorer = req_scorer;
774
723
  RXSc(self)->excl_scorer = excl_scorer;
@@ -787,26 +736,22 @@ static FrtScorer *req_excl_scorer_new(FrtScorer *req_scorer, FrtScorer *excl_sco
787
736
  * NonMatchScorer
788
737
  ***************************************************************************/
789
738
 
790
- static float nmsc_score(FrtScorer *self)
791
- {
739
+ static float nmsc_score(FrtScorer *self) {
792
740
  (void)self;
793
741
  return 0.0;
794
742
  }
795
743
 
796
- static bool nmsc_next(FrtScorer *self)
797
- {
744
+ static bool nmsc_next(FrtScorer *self) {
798
745
  (void)self;
799
746
  return false;
800
747
  }
801
748
 
802
- static bool nmsc_skip_to(FrtScorer *self, int doc_num)
803
- {
749
+ static bool nmsc_skip_to(FrtScorer *self, int doc_num) {
804
750
  (void)self; (void)doc_num;
805
751
  return false;
806
752
  }
807
753
 
808
- static FrtExplanation *nmsc_explain(FrtScorer *self, int doc_num)
809
- {
754
+ static FrtExplanation *nmsc_explain(FrtScorer *self, int doc_num) {
810
755
  (void)self; (void)doc_num;
811
756
  return frt_expl_new(0.0, "No documents matched");
812
757
  }
@@ -845,14 +790,12 @@ static FrtScorer *counting_sum_scorer_create3(BooleanScorer *bsc, FrtScorer *req
845
790
  if (bsc->ps_cnt == 0) {
846
791
  /* no prohibited */
847
792
  return req_opt_sum_scorer_new(req_scorer, opt_scorer);
848
- }
849
- else if (bsc->ps_cnt == 1) {
793
+ } else if (bsc->ps_cnt == 1) {
850
794
  /* 1 prohibited */
851
795
  return req_opt_sum_scorer_new(
852
796
  req_excl_scorer_new(req_scorer, bsc->prohibited_scorers[0]),
853
797
  opt_scorer);
854
- }
855
- else {
798
+ } else {
856
799
  /* more prohibited */
857
800
  return req_opt_sum_scorer_new(
858
801
  req_excl_scorer_new(
@@ -866,31 +809,26 @@ static FrtScorer *counting_sum_scorer_create3(BooleanScorer *bsc, FrtScorer *req
866
809
  static FrtScorer *counting_sum_scorer_create2(BooleanScorer *bsc,
867
810
  FrtScorer *req_scorer,
868
811
  FrtScorer **optional_scorers,
869
- int os_cnt)
870
- {
812
+ int os_cnt) {
871
813
  if (os_cnt == 0) {
872
814
  if (bsc->ps_cnt == 0) {
873
815
  return req_scorer;
874
- }
875
- else if (bsc->ps_cnt == 1) {
816
+ } else if (bsc->ps_cnt == 1) {
876
817
  return req_excl_scorer_new(req_scorer,
877
818
  bsc->prohibited_scorers[0]);
878
- }
879
- else {
819
+ } else {
880
820
  /* no optional, more than 1 prohibited */
881
821
  return req_excl_scorer_new(
882
822
  req_scorer,
883
823
  disjunction_sum_scorer_new(bsc->prohibited_scorers,
884
824
  bsc->ps_cnt, 1));
885
825
  }
886
- }
887
- else if (os_cnt == 1) {
826
+ } else if (os_cnt == 1) {
888
827
  return counting_sum_scorer_create3(
889
828
  bsc,
890
829
  req_scorer,
891
830
  single_match_scorer_new(bsc->coordinator, optional_scorers[0]));
892
- }
893
- else {
831
+ } else {
894
832
  /* more optional */
895
833
  return counting_sum_scorer_create3(
896
834
  bsc,
@@ -900,8 +838,7 @@ static FrtScorer *counting_sum_scorer_create2(BooleanScorer *bsc,
900
838
  }
901
839
  }
902
840
 
903
- static FrtScorer *counting_sum_scorer_create(BooleanScorer *bsc)
904
- {
841
+ static FrtScorer *counting_sum_scorer_create(BooleanScorer *bsc) {
905
842
  if (bsc->rs_cnt == 0) {
906
843
  if (bsc->os_cnt == 0) {
907
844
  int i;
@@ -911,16 +848,14 @@ static FrtScorer *counting_sum_scorer_create(BooleanScorer *bsc)
911
848
  bsc->prohibited_scorers[i]);
912
849
  }
913
850
  return non_matching_scorer_new();
914
- }
915
- else if (bsc->os_cnt == 1) {
851
+ } else if (bsc->os_cnt == 1) {
916
852
  /* the only optional scorer is required */
917
853
  return counting_sum_scorer_create2(
918
854
  bsc,
919
855
  single_match_scorer_new(bsc->coordinator,
920
856
  bsc->optional_scorers[0]),
921
857
  NULL, 0); /* no optional scorers left */
922
- }
923
- else {
858
+ } else {
924
859
  /* more than 1 optional_scorers, no required scorers */
925
860
  return counting_sum_scorer_create2(
926
861
  bsc,
@@ -929,15 +864,13 @@ static FrtScorer *counting_sum_scorer_create(BooleanScorer *bsc)
929
864
  bsc->os_cnt, 1),
930
865
  NULL, 0); /* no optional scorers left */
931
866
  }
932
- }
933
- else if (bsc->rs_cnt == 1) {
867
+ } else if (bsc->rs_cnt == 1) {
934
868
  /* 1 required */
935
869
  return counting_sum_scorer_create2(
936
870
  bsc,
937
871
  single_match_scorer_new(bsc->coordinator, bsc->required_scorers[0]),
938
872
  bsc->optional_scorers, bsc->os_cnt);
939
- }
940
- else {
873
+ } else {
941
874
  /* more required scorers */
942
875
  return counting_sum_scorer_create2(
943
876
  bsc,
@@ -948,14 +881,12 @@ static FrtScorer *counting_sum_scorer_create(BooleanScorer *bsc)
948
881
  }
949
882
  }
950
883
 
951
- static FrtScorer *bsc_init_counting_sum_scorer(BooleanScorer *bsc)
952
- {
884
+ static FrtScorer *bsc_init_counting_sum_scorer(BooleanScorer *bsc) {
953
885
  coord_init(bsc->coordinator);
954
886
  return bsc->counting_sum_scorer = counting_sum_scorer_create(bsc);
955
887
  }
956
888
 
957
- static void bsc_add_scorer(FrtScorer *self, FrtScorer *scorer, unsigned int occur)
958
- {
889
+ static void bsc_add_scorer(FrtScorer *self, FrtScorer *scorer, unsigned int occur) {
959
890
  BooleanScorer *bsc = BSc(self);
960
891
  if (occur != FRT_BC_MUST_NOT) {
961
892
  bsc->coordinator->max_coord++;
@@ -980,8 +911,7 @@ static void bsc_add_scorer(FrtScorer *self, FrtScorer *scorer, unsigned int occu
980
911
  }
981
912
  }
982
913
 
983
- static float bsc_score(FrtScorer *self)
984
- {
914
+ static float bsc_score(FrtScorer *self) {
985
915
  BooleanScorer *bsc = BSc(self);
986
916
  Coordinator *coord = bsc->coordinator;
987
917
  float sum;
@@ -990,8 +920,7 @@ static float bsc_score(FrtScorer *self)
990
920
  return sum * coord->coord_factors[coord->num_matches];
991
921
  }
992
922
 
993
- static bool bsc_next(FrtScorer *self)
994
- {
923
+ static bool bsc_next(FrtScorer *self) {
995
924
  FrtScorer *cnt_sum_sc = BSc(self)->counting_sum_scorer;
996
925
 
997
926
  if (!cnt_sum_sc) {
@@ -1000,14 +929,12 @@ static bool bsc_next(FrtScorer *self)
1000
929
  if (cnt_sum_sc->next(cnt_sum_sc)) {
1001
930
  self->doc = cnt_sum_sc->doc;
1002
931
  return true;
1003
- }
1004
- else {
932
+ } else {
1005
933
  return false;
1006
934
  }
1007
935
  }
1008
936
 
1009
- static bool bsc_skip_to(FrtScorer *self, int doc_num)
1010
- {
937
+ static bool bsc_skip_to(FrtScorer *self, int doc_num) {
1011
938
  FrtScorer *cnt_sum_sc = BSc(self)->counting_sum_scorer;
1012
939
 
1013
940
  if (!BSc(self)->counting_sum_scorer) {
@@ -1016,14 +943,12 @@ static bool bsc_skip_to(FrtScorer *self, int doc_num)
1016
943
  if (cnt_sum_sc->skip_to(cnt_sum_sc, doc_num)) {
1017
944
  self->doc = cnt_sum_sc->doc;
1018
945
  return true;
1019
- }
1020
- else {
946
+ } else {
1021
947
  return false;
1022
948
  }
1023
949
  }
1024
950
 
1025
- static void bsc_destroy(FrtScorer *self)
1026
- {
951
+ static void bsc_destroy(FrtScorer *self) {
1027
952
  BooleanScorer *bsc = BSc(self);
1028
953
  Coordinator *coord = bsc->coordinator;
1029
954
 
@@ -1032,8 +957,7 @@ static void bsc_destroy(FrtScorer *self)
1032
957
 
1033
958
  if (bsc->counting_sum_scorer) {
1034
959
  bsc->counting_sum_scorer->destroy(bsc->counting_sum_scorer);
1035
- }
1036
- else {
960
+ } else {
1037
961
  int i;
1038
962
  for (i = 0; i < bsc->rs_cnt; i++) {
1039
963
  bsc->required_scorers[i]->destroy(bsc->required_scorers[i]);
@@ -1053,14 +977,12 @@ static void bsc_destroy(FrtScorer *self)
1053
977
  frt_scorer_destroy_i(self);
1054
978
  }
1055
979
 
1056
- static FrtExplanation *bsc_explain(FrtScorer *self, int doc_num)
1057
- {
980
+ static FrtExplanation *bsc_explain(FrtScorer *self, int doc_num) {
1058
981
  (void)self; (void)doc_num;
1059
982
  return frt_expl_new(0.0, "This explanation is not supported");
1060
983
  }
1061
984
 
1062
- static FrtScorer *bsc_new(FrtSimilarity *similarity)
1063
- {
985
+ static FrtScorer *bsc_new(FrtSimilarity *similarity) {
1064
986
  FrtScorer *self = frt_scorer_new(BooleanScorer, similarity);
1065
987
  BSc(self)->coordinator = coord_new(similarity);
1066
988
  BSc(self)->counting_sum_scorer = NULL;
@@ -1079,16 +1001,14 @@ static FrtScorer *bsc_new(FrtSimilarity *similarity)
1079
1001
  *
1080
1002
  ***************************************************************************/
1081
1003
 
1082
- typedef struct BooleanWeight
1083
- {
1004
+ typedef struct BooleanWeight {
1084
1005
  FrtWeight w;
1085
1006
  FrtWeight **weights;
1086
1007
  int w_cnt;
1087
1008
  } BooleanWeight;
1088
1009
 
1089
1010
 
1090
- static float bw_sum_of_squared_weights(FrtWeight *self)
1091
- {
1011
+ static float bw_sum_of_squared_weights(FrtWeight *self) {
1092
1012
  FrtBooleanQuery *bq = BQ(self->query);
1093
1013
  float sum = 0.0f;
1094
1014
  int i;
@@ -1106,8 +1026,7 @@ static float bw_sum_of_squared_weights(FrtWeight *self)
1106
1026
  return sum;
1107
1027
  }
1108
1028
 
1109
- static void bw_normalize(FrtWeight *self, float normalization_factor)
1110
- {
1029
+ static void bw_normalize(FrtWeight *self, float normalization_factor) {
1111
1030
  FrtBooleanQuery *bq = BQ(self->query);
1112
1031
  int i;
1113
1032
 
@@ -1122,8 +1041,7 @@ static void bw_normalize(FrtWeight *self, float normalization_factor)
1122
1041
  }
1123
1042
  }
1124
1043
 
1125
- static FrtScorer *bw_scorer(FrtWeight *self, FrtIndexReader *ir)
1126
- {
1044
+ static FrtScorer *bw_scorer(FrtWeight *self, FrtIndexReader *ir) {
1127
1045
  FrtScorer *bsc = bsc_new(self->similarity);
1128
1046
  FrtBooleanQuery *bq = BQ(self->query);
1129
1047
  int i;
@@ -1134,8 +1052,7 @@ static FrtScorer *bw_scorer(FrtWeight *self, FrtIndexReader *ir)
1134
1052
  FrtScorer *sub_scorer = weight->scorer(weight, ir);
1135
1053
  if (sub_scorer) {
1136
1054
  bsc_add_scorer(bsc, sub_scorer, clause->occur);
1137
- }
1138
- else if (clause->is_required) {
1055
+ } else if (clause->is_required) {
1139
1056
  bsc->destroy(bsc);
1140
1057
  return NULL;
1141
1058
  }
@@ -1144,13 +1061,11 @@ static FrtScorer *bw_scorer(FrtWeight *self, FrtIndexReader *ir)
1144
1061
  return bsc;
1145
1062
  }
1146
1063
 
1147
- static char *bw_to_s(FrtWeight *self)
1148
- {
1064
+ static char *bw_to_s(FrtWeight *self) {
1149
1065
  return frt_strfmt("BooleanWeight(%f)", self->value);
1150
1066
  }
1151
1067
 
1152
- static void bw_destroy(FrtWeight *self)
1153
- {
1068
+ static void bw_destroy(FrtWeight *self) {
1154
1069
  int i;
1155
1070
 
1156
1071
  for (i = 0; i < BW(self)->w_cnt; i++) {
@@ -1333,8 +1248,7 @@ static FrtQuery *bq_rewrite(FrtQuery *self, FrtIndexReader *ir) {
1333
1248
  if ((q == clause->query) && BQ(self)->original_boost) {
1334
1249
  /* rewrite was no-op */
1335
1250
  q->boost = BQ(self)->original_boost * self->boost;
1336
- }
1337
- else {
1251
+ } else {
1338
1252
  /* save original boost in case query is rewritten again */
1339
1253
  BQ(self)->original_boost = q->boost;
1340
1254
  q->boost *= self->boost;