ferret 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|