ferret 0.1.3 → 0.1.4
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.
- data/Rakefile +1 -1
- data/TODO +3 -0
- data/ext/dummy.exe +0 -0
- data/lib/ferret.rb +1 -1
- data/lib/ferret/analysis/token.rb +6 -0
- data/lib/ferret/analysis/tokenizers.rb +5 -5
- data/lib/ferret/document/document.rb +10 -13
- data/lib/ferret/index/compound_file_io.rb +12 -9
- data/lib/ferret/index/field_infos.rb +0 -6
- data/lib/ferret/index/index.rb +220 -102
- data/lib/ferret/index/index_reader.rb +22 -2
- data/lib/ferret/index/index_writer.rb +55 -14
- data/lib/ferret/index/multi_reader.rb +279 -279
- data/lib/ferret/index/segment_infos.rb +3 -3
- data/lib/ferret/index/segment_merger.rb +7 -6
- data/lib/ferret/index/segment_reader.rb +23 -7
- data/lib/ferret/index/segment_term_enum.rb +6 -7
- data/lib/ferret/index/term_buffer.rb +3 -5
- data/lib/ferret/index/term_doc_enum.rb +7 -2
- data/lib/ferret/index/term_infos_io.rb +15 -8
- data/lib/ferret/query_parser/query_parser.tab.rb +49 -45
- data/lib/ferret/search/boolean_query.rb +3 -4
- data/lib/ferret/search/boolean_scorer.rb +11 -11
- data/lib/ferret/search/caching_wrapper_filter.rb +1 -1
- data/lib/ferret/search/disjunction_sum_scorer.rb +9 -7
- data/lib/ferret/search/field_cache.rb +1 -2
- data/lib/ferret/search/field_sorted_hit_queue.rb +1 -1
- data/lib/ferret/search/fuzzy_term_enum.rb +64 -58
- data/lib/ferret/search/index_searcher.rb +16 -9
- data/lib/ferret/search/prefix_query.rb +7 -0
- data/lib/ferret/search/query_filter.rb +1 -1
- data/lib/ferret/search/term_scorer.rb +5 -1
- data/lib/ferret/search/top_docs.rb +12 -0
- data/lib/ferret/store/buffered_index_io.rb +5 -6
- data/lib/ferret/store/fs_store.rb +47 -33
- data/lib/ferret/store/ram_store.rb +2 -2
- data/lib/ferret/utils.rb +1 -0
- data/lib/ferret/utils/bit_vector.rb +20 -2
- data/lib/ferret/utils/thread_local.rb +28 -0
- data/lib/ferret/utils/weak_key_hash.rb +11 -2
- data/test/benchmark/tb_rw_vint.rb +1 -1
- data/test/functional/thread_safety_index_test.rb +81 -0
- data/test/functional/thread_safety_test.rb +137 -0
- data/test/test_all.rb +3 -7
- data/test/test_helper.rb +2 -1
- data/test/unit/index/tc_compound_file_io.rb +2 -2
- data/test/unit/index/tc_index.rb +128 -6
- data/test/unit/index/tc_index_reader.rb +1 -1
- data/test/unit/index/tc_segment_infos.rb +1 -1
- data/test/unit/index/th_doc.rb +1 -1
- data/test/unit/search/tc_index_searcher.rb +6 -0
- data/test/unit/store/tc_fs_store.rb +3 -3
- data/test/unit/utils/tc_bit_vector.rb +8 -0
- data/test/unit/utils/tc_thread.rb +61 -0
- data/test/unit/utils/tc_weak_key_hash.rb +2 -2
- data/test/utils/number_to_spoken.rb +132 -0
- metadata +7 -2
@@ -31,6 +31,7 @@ module Ferret::Index
|
|
31
31
|
def add(reader)
|
32
32
|
@readers << reader
|
33
33
|
end
|
34
|
+
alias :<< :add
|
34
35
|
|
35
36
|
#
|
36
37
|
# i:: The index of the reader to return
|
@@ -61,24 +62,24 @@ module Ferret::Index
|
|
61
62
|
|
62
63
|
cfs_writer = CompoundFileWriter.new(@directory, file_name)
|
63
64
|
|
64
|
-
files =
|
65
|
+
files = []
|
65
66
|
|
66
67
|
# Basic files
|
67
|
-
IndexFileNames::COMPOUND_EXTENSIONS.
|
68
|
-
files << @segment
|
68
|
+
IndexFileNames::COMPOUND_EXTENSIONS.each do |ext|
|
69
|
+
files << "#{@segment}.#{ext}"
|
69
70
|
end
|
70
71
|
|
71
72
|
# Field norm files
|
72
73
|
@field_infos.each_with_index do |fi, i|
|
73
74
|
if (fi.indexed?)
|
74
|
-
files << @segment
|
75
|
+
files << "#{@segment}.f#{i}"
|
75
76
|
end
|
76
77
|
end
|
77
78
|
|
78
79
|
# Vector files
|
79
80
|
if @field_infos.has_vectors?
|
80
|
-
IndexFileNames::VECTOR_EXTENSIONS.
|
81
|
-
files << @segment
|
81
|
+
IndexFileNames::VECTOR_EXTENSIONS.each do |ext|
|
82
|
+
files << "#{@segment}.#{ext}"
|
82
83
|
end
|
83
84
|
end
|
84
85
|
|
@@ -37,8 +37,10 @@ module Ferret::Index
|
|
37
37
|
@prox_stream = cfs.open_input(@segment + '.prx')
|
38
38
|
@norms = {}
|
39
39
|
@norms.extend(MonitorMixin)
|
40
|
+
@norms_dirty = false
|
40
41
|
open_norms(cfs)
|
41
42
|
|
43
|
+
@tv_reader_orig = nil
|
42
44
|
if @field_infos.has_vectors? then
|
43
45
|
@tv_reader_orig = TermVectorsReader.new(cfs, @segment, @field_infos)
|
44
46
|
end
|
@@ -65,7 +67,9 @@ module Ferret::Index
|
|
65
67
|
end
|
66
68
|
|
67
69
|
def do_close()
|
68
|
-
|
70
|
+
# clear the cache
|
71
|
+
Thread.current["#{self.object_id}-#{@segment}-tv_reader"] = nil
|
72
|
+
|
69
73
|
@fields_reader.close()
|
70
74
|
@term_infos.close()
|
71
75
|
|
@@ -88,11 +92,12 @@ module Ferret::Index
|
|
88
92
|
|
89
93
|
|
90
94
|
def SegmentReader.uses_compound_file?(si)
|
91
|
-
return si.
|
95
|
+
return si.directory.exists?(si.name + ".cfs")
|
92
96
|
end
|
93
97
|
|
94
98
|
def SegmentReader.has_separate_norms?(si)
|
95
|
-
|
99
|
+
si.directory.each {|f| return true if f =~ /^#{si.name}\.s/}
|
100
|
+
return false
|
96
101
|
end
|
97
102
|
|
98
103
|
def do_delete(doc_num)
|
@@ -294,11 +299,22 @@ module Ferret::Index
|
|
294
299
|
# in the Thread
|
295
300
|
# returns:: TermVectorsReader
|
296
301
|
def get_term_vectors_reader()
|
297
|
-
#
|
298
|
-
|
299
|
-
|
302
|
+
#tvr_cache = Thread.current["tv_reader"]
|
303
|
+
#if (tvr_cache == nil)
|
304
|
+
# tvr_cache = Thread.current["tv_reader"] = Ferret::Utils::WeakKeyHash.new
|
305
|
+
#end
|
306
|
+
#tvr_cache.synchronize do
|
307
|
+
# tv_reader = tvr_cache[self]
|
308
|
+
# if tv_reader == nil
|
309
|
+
# tv_reader = @tv_reader_orig.clone()
|
310
|
+
# tvr_cache[self] = tv_reader
|
311
|
+
# end
|
312
|
+
# return tv_reader
|
313
|
+
#end
|
314
|
+
tv_reader = Thread.current.get_local(self)
|
315
|
+
if tv_reader.nil?
|
300
316
|
tv_reader = @tv_reader_orig.clone()
|
301
|
-
Thread.current
|
317
|
+
Thread.current.set_local(self, tv_reader)
|
302
318
|
end
|
303
319
|
return tv_reader
|
304
320
|
end
|
@@ -64,13 +64,12 @@ module Ferret::Index
|
|
64
64
|
protected :input, :input=, :term_buffer,
|
65
65
|
:term_buffer=, :prev_buffer, :prev_buffer=
|
66
66
|
|
67
|
-
def
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
return clone
|
67
|
+
def initialize_copy(o)
|
68
|
+
super
|
69
|
+
@input = o.input.clone
|
70
|
+
@term_info = o.term_info.clone
|
71
|
+
@term_buffer = o.term_buffer.clone
|
72
|
+
@prev_buffer = o.prev_buffer.clone
|
74
73
|
end
|
75
74
|
|
76
75
|
def seek(pointer, position, term, term_info)
|
@@ -110,8 +110,10 @@ module Ferret::Index
|
|
110
110
|
|
111
111
|
def close()
|
112
112
|
@freq_stream.close()
|
113
|
+
@freq_stream = nil
|
113
114
|
if (@skip_stream != nil)
|
114
115
|
@skip_stream.close()
|
116
|
+
@skip_stream = nil
|
115
117
|
end
|
116
118
|
@parent = nil
|
117
119
|
end
|
@@ -143,11 +145,11 @@ module Ferret::Index
|
|
143
145
|
# Optimized implementation.
|
144
146
|
def read(docs, freqs, start = 0)
|
145
147
|
i = start
|
146
|
-
needed=docs.length
|
148
|
+
needed = docs.length
|
147
149
|
|
148
150
|
while (i < needed and @count < @doc_freq)
|
149
151
|
|
150
|
-
# manually inlined call to next() for speed
|
152
|
+
# manually inlined call to next?() for speed
|
151
153
|
doc_code = @freq_stream.read_vint()
|
152
154
|
@doc += doc_code >> 1 # shift off low bit
|
153
155
|
if ((doc_code & 1) != 0) # if low bit is set
|
@@ -155,6 +157,7 @@ module Ferret::Index
|
|
155
157
|
else
|
156
158
|
@freq = @freq_stream.read_vint() # else read freq
|
157
159
|
end
|
160
|
+
|
158
161
|
@count += 1
|
159
162
|
|
160
163
|
if (@deleted_docs == nil or not @deleted_docs[@doc])
|
@@ -162,6 +165,8 @@ module Ferret::Index
|
|
162
165
|
freqs[i] = @freq
|
163
166
|
i += 1
|
164
167
|
end
|
168
|
+
|
169
|
+
skipping_doc()
|
165
170
|
end
|
166
171
|
return i
|
167
172
|
end
|
@@ -115,8 +115,6 @@ module Ferret::Index
|
|
115
115
|
def initialize(dir, seg, fis)
|
116
116
|
super()
|
117
117
|
|
118
|
-
Thread.current["#{self.object_id}-term_enum"] = nil
|
119
|
-
|
120
118
|
@directory = dir
|
121
119
|
@segment = seg
|
122
120
|
@field_infos = fis
|
@@ -134,8 +132,6 @@ module Ferret::Index
|
|
134
132
|
|
135
133
|
def close()
|
136
134
|
# clear this threads cache
|
137
|
-
Thread.current["#{self.object_id}-term_enum"] = nil
|
138
|
-
|
139
135
|
@orig_enum.close() if (@orig_enum != nil)
|
140
136
|
@index_enum.close() if (@index_enum != nil)
|
141
137
|
end
|
@@ -211,10 +207,21 @@ module Ferret::Index
|
|
211
207
|
private
|
212
208
|
|
213
209
|
def enum()
|
214
|
-
|
215
|
-
if (
|
216
|
-
|
217
|
-
|
210
|
+
#te_cache = Thread.current["term_enum"]
|
211
|
+
#if (te_cache == nil)
|
212
|
+
# te_cache = Thread.current["term_enum"] = Ferret::Utils::WeakKeyHash.new
|
213
|
+
#end
|
214
|
+
#te_cache.synchronize do
|
215
|
+
# term_enum = te_cache[self]
|
216
|
+
# if term_enum == nil
|
217
|
+
# term_enum = terms()
|
218
|
+
# te_cache[self] = term_enum
|
219
|
+
# end
|
220
|
+
# return term_enum
|
221
|
+
#end
|
222
|
+
term_enum = Thread.current.get_local(self)
|
223
|
+
if term_enum.nil?
|
224
|
+
Thread.current.set_local(self, term_enum = terms())
|
218
225
|
end
|
219
226
|
return term_enum
|
220
227
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# DO NOT MODIFY!!!!
|
3
3
|
# This file is automatically generated by racc 1.4.4
|
4
|
-
# from racc grammer file "query_parser.y".
|
4
|
+
# from racc grammer file "lib/ferret/query_parser/query_parser.y".
|
5
5
|
#
|
6
6
|
|
7
7
|
require 'racc/parser'
|
@@ -11,12 +11,12 @@ module Ferret
|
|
11
11
|
|
12
12
|
class QueryParser < Racc::Parser
|
13
13
|
|
14
|
-
module_eval <<'..end query_parser.y modeval..
|
14
|
+
module_eval <<'..end lib/ferret/query_parser/query_parser.y modeval..id9e08d44076', 'lib/ferret/query_parser/query_parser.y', 126
|
15
15
|
attr_accessor :default_field, :fields
|
16
16
|
|
17
17
|
# true if you want to downcase wild card queries. This is set to try by
|
18
18
|
# default.
|
19
|
-
|
19
|
+
attr_writer :wild_lower
|
20
20
|
|
21
21
|
def wild_lower?() @wild_lower end
|
22
22
|
|
@@ -369,8 +369,12 @@ module_eval <<'..end query_parser.y modeval..id2aa118b008', 'query_parser.y', 12
|
|
369
369
|
end
|
370
370
|
end
|
371
371
|
|
372
|
+
def QueryParser.parse(query, default_field = "*", options = {})
|
373
|
+
qp = QueryParser.new(default_field, options)
|
374
|
+
return qp.parse(query)
|
375
|
+
end
|
372
376
|
|
373
|
-
..end query_parser.y modeval..
|
377
|
+
..end lib/ferret/query_parser/query_parser.y modeval..id9e08d44076
|
374
378
|
|
375
379
|
##### racc 1.4.4 generates ###
|
376
380
|
|
@@ -604,49 +608,49 @@ Racc_debug_parser = false
|
|
604
608
|
|
605
609
|
# reduce 0 omitted
|
606
610
|
|
607
|
-
module_eval <<'.,.,', 'query_parser.y', 19
|
611
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 19
|
608
612
|
def _reduce_1( val, _values)
|
609
613
|
get_boolean_query(val[0])
|
610
614
|
end
|
611
615
|
.,.,
|
612
616
|
|
613
|
-
module_eval <<'.,.,', 'query_parser.y', 24
|
617
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 24
|
614
618
|
def _reduce_2( val, _values)
|
615
619
|
[val[0]]
|
616
620
|
end
|
617
621
|
.,.,
|
618
622
|
|
619
|
-
module_eval <<'.,.,', 'query_parser.y', 28
|
623
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 28
|
620
624
|
def _reduce_3( val, _values)
|
621
625
|
add_and_clause(val[0], val[2])
|
622
626
|
end
|
623
627
|
.,.,
|
624
628
|
|
625
|
-
module_eval <<'.,.,', 'query_parser.y', 32
|
629
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 32
|
626
630
|
def _reduce_4( val, _values)
|
627
631
|
add_or_clause(val[0], val[2])
|
628
632
|
end
|
629
633
|
.,.,
|
630
634
|
|
631
|
-
module_eval <<'.,.,', 'query_parser.y', 36
|
635
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 36
|
632
636
|
def _reduce_5( val, _values)
|
633
637
|
add_default_clause(val[0], val[1])
|
634
638
|
end
|
635
639
|
.,.,
|
636
640
|
|
637
|
-
module_eval <<'.,.,', 'query_parser.y', 41
|
641
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 41
|
638
642
|
def _reduce_6( val, _values)
|
639
643
|
get_boolean_clause(val[1], BooleanClause::Occur::MUST)
|
640
644
|
end
|
641
645
|
.,.,
|
642
646
|
|
643
|
-
module_eval <<'.,.,', 'query_parser.y', 45
|
647
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 45
|
644
648
|
def _reduce_7( val, _values)
|
645
649
|
get_boolean_clause(val[1], BooleanClause::Occur::MUST_NOT)
|
646
650
|
end
|
647
651
|
.,.,
|
648
652
|
|
649
|
-
module_eval <<'.,.,', 'query_parser.y', 49
|
653
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 49
|
650
654
|
def _reduce_8( val, _values)
|
651
655
|
get_boolean_clause(val[0], BooleanClause::Occur::SHOULD)
|
652
656
|
end
|
@@ -654,7 +658,7 @@ module_eval <<'.,.,', 'query_parser.y', 49
|
|
654
658
|
|
655
659
|
# reduce 9 omitted
|
656
660
|
|
657
|
-
module_eval <<'.,.,', 'query_parser.y', 51
|
661
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 51
|
658
662
|
def _reduce_10( val, _values)
|
659
663
|
val[0].boost = val[2].to_f; return val[0]
|
660
664
|
end
|
@@ -662,7 +666,7 @@ module_eval <<'.,.,', 'query_parser.y', 51
|
|
662
666
|
|
663
667
|
# reduce 11 omitted
|
664
668
|
|
665
|
-
module_eval <<'.,.,', 'query_parser.y', 58
|
669
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 58
|
666
670
|
def _reduce_12( val, _values)
|
667
671
|
get_boolean_query(val[1])
|
668
672
|
end
|
@@ -676,187 +680,187 @@ module_eval <<'.,.,', 'query_parser.y', 58
|
|
676
680
|
|
677
681
|
# reduce 16 omitted
|
678
682
|
|
679
|
-
module_eval <<'.,.,', 'query_parser.y', 67
|
683
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 67
|
680
684
|
def _reduce_17( val, _values)
|
681
685
|
_get_term_query(val[0])
|
682
686
|
end
|
683
687
|
.,.,
|
684
688
|
|
685
|
-
module_eval <<'.,.,', 'query_parser.y', 71
|
689
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 71
|
686
690
|
def _reduce_18( val, _values)
|
687
691
|
_get_fuzzy_query(val[0], val[2])
|
688
692
|
end
|
689
693
|
.,.,
|
690
694
|
|
691
|
-
module_eval <<'.,.,', 'query_parser.y', 75
|
695
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 75
|
692
696
|
def _reduce_19( val, _values)
|
693
697
|
_get_fuzzy_query(val[0])
|
694
698
|
end
|
695
699
|
.,.,
|
696
700
|
|
697
|
-
module_eval <<'.,.,', 'query_parser.y', 80
|
701
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 80
|
698
702
|
def _reduce_20( val, _values)
|
699
703
|
_get_wild_query(val[0])
|
700
704
|
end
|
701
705
|
.,.,
|
702
706
|
|
703
|
-
module_eval <<'.,.,', 'query_parser.y', 81
|
707
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 81
|
704
708
|
def _reduce_21( val, _values)
|
705
709
|
@field = @default_field
|
706
710
|
end
|
707
711
|
.,.,
|
708
712
|
|
709
|
-
module_eval <<'.,.,', 'query_parser.y', 85
|
713
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 85
|
710
714
|
def _reduce_22( val, _values)
|
711
715
|
val[2]
|
712
716
|
end
|
713
717
|
.,.,
|
714
718
|
|
715
|
-
module_eval <<'.,.,', 'query_parser.y', 85
|
719
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 85
|
716
720
|
def _reduce_23( val, _values)
|
717
721
|
@field = "*"
|
718
722
|
end
|
719
723
|
.,.,
|
720
724
|
|
721
|
-
module_eval <<'.,.,', 'query_parser.y', 85
|
725
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 85
|
722
726
|
def _reduce_24( val, _values)
|
723
727
|
@field = @default_field
|
724
728
|
end
|
725
729
|
.,.,
|
726
730
|
|
727
|
-
module_eval <<'.,.,', 'query_parser.y', 89
|
731
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 89
|
728
732
|
def _reduce_25( val, _values)
|
729
733
|
val[3]
|
730
734
|
end
|
731
735
|
.,.,
|
732
736
|
|
733
|
-
module_eval <<'.,.,', 'query_parser.y', 90
|
737
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 90
|
734
738
|
def _reduce_26( val, _values)
|
735
739
|
@field = [val[0]]
|
736
740
|
end
|
737
741
|
.,.,
|
738
742
|
|
739
|
-
module_eval <<'.,.,', 'query_parser.y', 91
|
743
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 91
|
740
744
|
def _reduce_27( val, _values)
|
741
745
|
@field = val[0] += [val[2]]
|
742
746
|
end
|
743
747
|
.,.,
|
744
748
|
|
745
|
-
module_eval <<'.,.,', 'query_parser.y', 97
|
749
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 97
|
746
750
|
def _reduce_28( val, _values)
|
747
751
|
get_phrase_query(val[1])
|
748
752
|
end
|
749
753
|
.,.,
|
750
754
|
|
751
|
-
module_eval <<'.,.,', 'query_parser.y', 101
|
755
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 101
|
752
756
|
def _reduce_29( val, _values)
|
753
757
|
get_phrase_query(val[1], val[4].to_i)
|
754
758
|
end
|
755
759
|
.,.,
|
756
760
|
|
757
|
-
module_eval <<'.,.,', 'query_parser.y', 101
|
761
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 101
|
758
762
|
def _reduce_30( val, _values)
|
759
763
|
nil
|
760
764
|
end
|
761
765
|
.,.,
|
762
766
|
|
763
|
-
module_eval <<'.,.,', 'query_parser.y', 102
|
767
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 102
|
764
768
|
def _reduce_31( val, _values)
|
765
769
|
nil
|
766
770
|
end
|
767
771
|
.,.,
|
768
772
|
|
769
|
-
module_eval <<'.,.,', 'query_parser.y', 104
|
773
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 104
|
770
774
|
def _reduce_32( val, _values)
|
771
775
|
[val[0]]
|
772
776
|
end
|
773
777
|
.,.,
|
774
778
|
|
775
|
-
module_eval <<'.,.,', 'query_parser.y', 105
|
779
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 105
|
776
780
|
def _reduce_33( val, _values)
|
777
781
|
val[0] << val[1]
|
778
782
|
end
|
779
783
|
.,.,
|
780
784
|
|
781
|
-
module_eval <<'.,.,', 'query_parser.y', 106
|
785
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 106
|
782
786
|
def _reduce_34( val, _values)
|
783
787
|
val[0] << nil
|
784
788
|
end
|
785
789
|
.,.,
|
786
790
|
|
787
|
-
module_eval <<'.,.,', 'query_parser.y', 107
|
791
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 107
|
788
792
|
def _reduce_35( val, _values)
|
789
793
|
add_multi_word(val[0], val[2])
|
790
794
|
end
|
791
795
|
.,.,
|
792
796
|
|
793
|
-
module_eval <<'.,.,', 'query_parser.y', 109
|
797
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 109
|
794
798
|
def _reduce_36( val, _values)
|
795
799
|
_get_range_query(val[1], val[2], true, true)
|
796
800
|
end
|
797
801
|
.,.,
|
798
802
|
|
799
|
-
module_eval <<'.,.,', 'query_parser.y', 110
|
803
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 110
|
800
804
|
def _reduce_37( val, _values)
|
801
805
|
_get_range_query(val[1], val[2], true, false)
|
802
806
|
end
|
803
807
|
.,.,
|
804
808
|
|
805
|
-
module_eval <<'.,.,', 'query_parser.y', 111
|
809
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 111
|
806
810
|
def _reduce_38( val, _values)
|
807
811
|
_get_range_query(val[1], val[2], false, true)
|
808
812
|
end
|
809
813
|
.,.,
|
810
814
|
|
811
|
-
module_eval <<'.,.,', 'query_parser.y', 112
|
815
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 112
|
812
816
|
def _reduce_39( val, _values)
|
813
817
|
_get_range_query(val[1], val[2], false, false)
|
814
818
|
end
|
815
819
|
.,.,
|
816
820
|
|
817
|
-
module_eval <<'.,.,', 'query_parser.y', 113
|
821
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 113
|
818
822
|
def _reduce_40( val, _values)
|
819
823
|
_get_range_query(nil, val[1], false, false)
|
820
824
|
end
|
821
825
|
.,.,
|
822
826
|
|
823
|
-
module_eval <<'.,.,', 'query_parser.y', 114
|
827
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 114
|
824
828
|
def _reduce_41( val, _values)
|
825
829
|
_get_range_query(nil, val[1], false, true)
|
826
830
|
end
|
827
831
|
.,.,
|
828
832
|
|
829
|
-
module_eval <<'.,.,', 'query_parser.y', 115
|
833
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 115
|
830
834
|
def _reduce_42( val, _values)
|
831
835
|
_get_range_query(val[1], nil, true, false)
|
832
836
|
end
|
833
837
|
.,.,
|
834
838
|
|
835
|
-
module_eval <<'.,.,', 'query_parser.y', 116
|
839
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 116
|
836
840
|
def _reduce_43( val, _values)
|
837
841
|
_get_range_query(val[1], nil, false, false)
|
838
842
|
end
|
839
843
|
.,.,
|
840
844
|
|
841
|
-
module_eval <<'.,.,', 'query_parser.y', 117
|
845
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 117
|
842
846
|
def _reduce_44( val, _values)
|
843
847
|
_get_range_query(nil, val[1], false, false)
|
844
848
|
end
|
845
849
|
.,.,
|
846
850
|
|
847
|
-
module_eval <<'.,.,', 'query_parser.y', 118
|
851
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 118
|
848
852
|
def _reduce_45( val, _values)
|
849
853
|
_get_range_query(nil, val[2], false, true)
|
850
854
|
end
|
851
855
|
.,.,
|
852
856
|
|
853
|
-
module_eval <<'.,.,', 'query_parser.y', 119
|
857
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 119
|
854
858
|
def _reduce_46( val, _values)
|
855
859
|
_get_range_query(val[2], nil, true, false)
|
856
860
|
end
|
857
861
|
.,.,
|
858
862
|
|
859
|
-
module_eval <<'.,.,', 'query_parser.y', 120
|
863
|
+
module_eval <<'.,.,', 'lib/ferret/query_parser/query_parser.y', 120
|
860
864
|
def _reduce_47( val, _values)
|
861
865
|
_get_range_query(val[1], nil, false, false)
|
862
866
|
end
|