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
@@ -21,11 +21,11 @@ static float cssc_score(FrtScorer *self) {
21
21
  }
22
22
 
23
23
  static bool cssc_next(FrtScorer *self) {
24
- return ((self->doc = frt_bv_scan_next(CScSc(self)->bv)) >= 0);
24
+ return ((self->doc_num = frt_bv_scan_next(CScSc(self)->bv)) >= 0);
25
25
  }
26
26
 
27
27
  static bool cssc_skip_to(FrtScorer *self, int doc_num) {
28
- return ((self->doc = frt_bv_scan_next_from(CScSc(self)->bv, doc_num)) >= 0);
28
+ return ((self->doc_num = frt_bv_scan_next_from(CScSc(self)->bv, doc_num)) >= 0);
29
29
  }
30
30
 
31
31
  static FrtExplanation *cssc_explain(FrtScorer *self, int doc_num) {
@@ -25,8 +25,8 @@ static bool fqsc_next(FrtScorer *self) {
25
25
  FrtScorer *sub_sc = FQSc(self)->sub_scorer;
26
26
  FrtBitVector *bv = FQSc(self)->bv;
27
27
  while (sub_sc->next(sub_sc)) {
28
- self->doc = sub_sc->doc;
29
- if (frt_bv_get(bv, self->doc)) return true;
28
+ self->doc_num = sub_sc->doc_num;
29
+ if (frt_bv_get(bv, self->doc_num)) return true;
30
30
  }
31
31
  return false;
32
32
  }
@@ -36,8 +36,8 @@ static bool fqsc_skip_to(FrtScorer *self, int doc_num) {
36
36
  FrtBitVector *bv = FQSc(self)->bv;
37
37
  if (sub_sc->skip_to(sub_sc, doc_num)) {
38
38
  do {
39
- self->doc = sub_sc->doc;
40
- if (frt_bv_get(bv, self->doc)) {
39
+ self->doc_num = sub_sc->doc_num;
40
+ if (frt_bv_get(bv, self->doc_num)) {
41
41
  return true;
42
42
  }
43
43
  } while (sub_sc->next(sub_sc));
@@ -10,36 +10,32 @@
10
10
  #define MASc(scorer) ((MatchAllScorer *)(scorer))
11
11
 
12
12
  typedef struct MatchAllScorer {
13
- FrtScorer super;
14
- FrtIndexReader *ir;
15
- int max_doc;
16
- float score;
13
+ FrtScorer super;
14
+ FrtIndexReader *ir;
15
+ int max_doc_num;
16
+ float score;
17
17
  } MatchAllScorer;
18
18
 
19
- static float masc_score(FrtScorer *self)
20
- {
19
+ static float masc_score(FrtScorer *self) {
21
20
  return MASc(self)->score;
22
21
  }
23
22
 
24
- static bool masc_next(FrtScorer *self)
25
- {
26
- while (self->doc < (MASc(self)->max_doc - 1)) {
27
- self->doc++;
28
- if (!MASc(self)->ir->is_deleted(MASc(self)->ir, self->doc)) {
23
+ static bool masc_next(FrtScorer *self) {
24
+ while (self->doc_num < (MASc(self)->max_doc_num - 1)) {
25
+ self->doc_num++;
26
+ if (!MASc(self)->ir->is_deleted(MASc(self)->ir, self->doc_num)) {
29
27
  return true;
30
28
  }
31
29
  }
32
30
  return false;
33
31
  }
34
32
 
35
- static bool masc_skip_to(FrtScorer *self, int doc_num)
36
- {
37
- self->doc = doc_num - 1;
33
+ static bool masc_skip_to(FrtScorer *self, int doc_num) {
34
+ self->doc_num = doc_num - 1;
38
35
  return masc_next(self);
39
36
  }
40
37
 
41
- static FrtExplanation *masc_explain(FrtScorer *self, int doc_num)
42
- {
38
+ static FrtExplanation *masc_explain(FrtScorer *self, int doc_num) {
43
39
  (void)self;
44
40
  (void)doc_num;
45
41
  return frt_expl_new(1.0, "MatchAllScorer");
@@ -54,9 +50,9 @@ static FrtScorer *masc_new(FrtWeight *weight, FrtIndexReader *ir) {
54
50
  FrtScorer *self = frt_scorer_new(MatchAllScorer, weight->similarity);
55
51
  MASc(self)->ir = ir;
56
52
  FRT_REF(ir);
57
- MASc(self)->max_doc = ir->max_doc(ir);
53
+ MASc(self)->max_doc_num = ir->max_doc_num(ir);
58
54
  MASc(self)->score = weight->value;
59
- self->doc = -1;
55
+ self->doc_num = -1;
60
56
  self->score = &masc_score;
61
57
  self->next = &masc_next;
62
58
  self->skip_to = &masc_skip_to;
@@ -72,13 +68,11 @@ static FrtScorer *masc_new(FrtWeight *weight, FrtIndexReader *ir) {
72
68
  *
73
69
  ***************************************************************************/
74
70
 
75
- static char *maw_to_s(FrtWeight *self)
76
- {
71
+ static char *maw_to_s(FrtWeight *self) {
77
72
  return frt_strfmt("MatchAllWeight(%f)", self->value);
78
73
  }
79
74
 
80
- static FrtExplanation *maw_explain(FrtWeight *self, FrtIndexReader *ir, int doc_num)
81
- {
75
+ static FrtExplanation *maw_explain(FrtWeight *self, FrtIndexReader *ir, int doc_num) {
82
76
  FrtExplanation *expl;
83
77
  if (!ir->is_deleted(ir, doc_num)) {
84
78
  expl = frt_expl_new(self->value, "MatchAllQuery: product of:");
@@ -117,14 +111,12 @@ static char *maq_to_s(FrtQuery *self, ID default_field) {
117
111
  }
118
112
  }
119
113
 
120
- static unsigned long long maq_hash(FrtQuery *self)
121
- {
114
+ static unsigned long long maq_hash(FrtQuery *self) {
122
115
  (void)self;
123
116
  return 0;
124
117
  }
125
118
 
126
- static int maq_eq(FrtQuery *self, FrtQuery *o)
127
- {
119
+ static int maq_eq(FrtQuery *self, FrtQuery *o) {
128
120
  (void)self; (void)o;
129
121
  return true;
130
122
  }
@@ -54,34 +54,33 @@ static BoostedTerm *boosted_term_new(const char *term, float boost) {
54
54
  #define TDE_READ_SIZE 16
55
55
 
56
56
  typedef struct TermDocEnumWrapper {
57
- const char *term;
57
+ const char *term;
58
58
  FrtTermDocEnum *tde;
59
- float boost;
60
- int doc;
61
- int freq;
62
- int docs[TDE_READ_SIZE];
63
- int freqs[TDE_READ_SIZE];
64
- int pointer;
65
- int pointer_max;
59
+ float boost;
60
+ int doc_num;
61
+ int freq;
62
+ int doc_nums[TDE_READ_SIZE];
63
+ int freqs[TDE_READ_SIZE];
64
+ int pointer;
65
+ int pointer_max;
66
66
  } TermDocEnumWrapper;
67
67
 
68
68
  static bool tdew_less_than(const TermDocEnumWrapper *tdew1, const TermDocEnumWrapper *tdew2) {
69
- return (tdew1->doc < tdew2->doc);
69
+ return (tdew1->doc_num < tdew2->doc_num);
70
70
  }
71
71
 
72
72
  static bool tdew_next(TermDocEnumWrapper *self) {
73
73
  self->pointer++;
74
74
  if (self->pointer >= self->pointer_max) {
75
75
  /* refill buffer */
76
- self->pointer_max = self->tde->read(self->tde, self->docs, self->freqs, TDE_READ_SIZE);
76
+ self->pointer_max = self->tde->read(self->tde, self->doc_nums, self->freqs, TDE_READ_SIZE);
77
77
  if (self->pointer_max != 0) {
78
78
  self->pointer = 0;
79
- }
80
- else {
79
+ } else {
81
80
  return false;
82
81
  }
83
82
  }
84
- self->doc = self->docs[self->pointer];
83
+ self->doc_num = self->doc_nums[self->pointer];
85
84
  self->freq = self->freqs[self->pointer];
86
85
  return true;
87
86
  }
@@ -90,8 +89,8 @@ static bool tdew_skip_to(TermDocEnumWrapper *self, int doc_num) {
90
89
  FrtTermDocEnum *tde = self->tde;
91
90
 
92
91
  while (++(self->pointer) < self->pointer_max) {
93
- if (self->docs[self->pointer] >= doc_num) {
94
- self->doc = self->docs[self->pointer];
92
+ if (self->doc_nums[self->pointer] >= doc_num) {
93
+ self->doc_num = self->doc_nums[self->pointer];
95
94
  self->freq = self->freqs[self->pointer];
96
95
  return true;
97
96
  }
@@ -101,7 +100,7 @@ static bool tdew_skip_to(TermDocEnumWrapper *self, int doc_num) {
101
100
  if (tde->skip_to(tde, doc_num)) {
102
101
  self->pointer_max = 1;
103
102
  self->pointer = 0;
104
- self->docs[0] = self->doc = tde->doc_num(tde);
103
+ self->doc_nums[0] = self->doc_num = tde->doc_num(tde);
105
104
  self->freqs[0] = self->freq = tde->freq(tde);
106
105
  return true;
107
106
  } else {
@@ -119,7 +118,7 @@ static TermDocEnumWrapper *tdew_new(const char *term, FrtTermDocEnum *tde, float
119
118
  self->term = term;
120
119
  self->tde = tde;
121
120
  self->boost = boost;
122
- self->doc = -1;
121
+ self->doc_num = -1;
123
122
  return self;
124
123
  }
125
124
 
@@ -145,11 +144,11 @@ typedef struct MultiTermScorer {
145
144
 
146
145
  static float multi_tsc_score(FrtScorer *self) {
147
146
  return MTSc(self)->total_score * MTSc(self)->weight_value
148
- * frt_sim_decode_norm(self->similarity, MTSc(self)->norms[self->doc]);
147
+ * frt_sim_decode_norm(self->similarity, MTSc(self)->norms[self->doc_num]);
149
148
  }
150
149
 
151
150
  static bool multi_tsc_next(FrtScorer *self) {
152
- int curr_doc;
151
+ int curr_doc_num;
153
152
  float total_score = 0.0f;
154
153
  TermDocEnumWrapper *tdew;
155
154
  MultiTermScorer *mtsc = MTSc(self);
@@ -171,7 +170,7 @@ static bool multi_tsc_next(FrtScorer *self) {
171
170
  return false;
172
171
  }
173
172
 
174
- self->doc = curr_doc = tdew->doc;
173
+ self->doc_num = curr_doc_num = tdew->doc_num;
175
174
  do {
176
175
  int freq = tdew->freq;
177
176
  if (freq < SCORE_CACHE_SIZE) {
@@ -187,7 +186,7 @@ static bool multi_tsc_next(FrtScorer *self) {
187
186
  }
188
187
 
189
188
  } while (((tdew = (TermDocEnumWrapper *)frt_pq_top(tdew_pq)) != NULL)
190
- && tdew->doc == curr_doc);
189
+ && tdew->doc_num == curr_doc_num);
191
190
  mtsc->total_score = total_score;
192
191
  return true;
193
192
  }
@@ -208,11 +207,11 @@ static bool multi_tsc_advance_to(FrtScorer *self, int target_doc_num) {
208
207
  MTSc(self)->tdew_pq = tdew_pq;
209
208
  }
210
209
  if (tdew_pq->size == 0) {
211
- self->doc = -1;
210
+ self->doc_num = -1;
212
211
  return false;
213
212
  }
214
213
  while ((tdew = (TermDocEnumWrapper *)frt_pq_top(tdew_pq)) != NULL
215
- && (target_doc_num > tdew->doc)) {
214
+ && (target_doc_num > tdew->doc_num)) {
216
215
  if (tdew_skip_to(tdew, target_doc_num)) {
217
216
  frt_pq_down(tdew_pq);
218
217
  } else {
@@ -232,11 +231,11 @@ static FrtExplanation *multi_tsc_explain(FrtScorer *self, int doc_num) {
232
231
  TermDocEnumWrapper *tdew;
233
232
 
234
233
  if (multi_tsc_advance_to(self, doc_num) &&
235
- (tdew = (TermDocEnumWrapper *)frt_pq_top(mtsc->tdew_pq))->doc == doc_num) {
234
+ (tdew = (TermDocEnumWrapper *)frt_pq_top(mtsc->tdew_pq))->doc_num == doc_num) {
236
235
 
237
236
  FrtPriorityQueue *tdew_pq = MTSc(self)->tdew_pq;
238
237
  FrtExplanation *expl = frt_expl_new(0.0f, "The sum of:");
239
- int curr_doc = self->doc = tdew->doc;
238
+ int curr_doc_num = self->doc_num = tdew->doc_num;
240
239
  float total_score = 0.0f;
241
240
 
242
241
  do {
@@ -257,7 +256,7 @@ static FrtExplanation *multi_tsc_explain(FrtScorer *self, int doc_num) {
257
256
  }
258
257
 
259
258
  } while (((tdew = (TermDocEnumWrapper *)frt_pq_top(tdew_pq)) != NULL)
260
- && tdew->doc == curr_doc);
259
+ && tdew->doc_num == curr_doc_num);
261
260
  expl->value = total_score;
262
261
  return expl;
263
262
  } else {
@@ -445,7 +444,7 @@ static FrtExplanation *multi_tw_explain(FrtWeight *self, FrtIndexReader *ir, int
445
444
  static FrtWeight *multi_tw_new(FrtQuery *query, FrtSearcher *searcher) {
446
445
  int i;
447
446
  int doc_freq = 0;
448
- FrtWeight *self = w_new(FrtWeight, query);
447
+ FrtWeight *self = w_new(FrtWeight, query);
449
448
  FrtPriorityQueue *bt_pq = MTQ(query)->boosted_terms;
450
449
 
451
450
  self->scorer = &multi_tw_scorer;
@@ -461,7 +460,7 @@ static FrtWeight *multi_tw_new(FrtQuery *query, FrtSearcher *searcher) {
461
460
  ((BoostedTerm *)bt_pq->heap[i])->term);
462
461
  }
463
462
  self->idf += frt_sim_idf(self->similarity, doc_freq,
464
- searcher->max_doc(searcher));
463
+ searcher->max_doc_num(searcher));
465
464
 
466
465
  return self;
467
466
  }