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.
Files changed (57) hide show
  1. data/Rakefile +1 -1
  2. data/TODO +3 -0
  3. data/ext/dummy.exe +0 -0
  4. data/lib/ferret.rb +1 -1
  5. data/lib/ferret/analysis/token.rb +6 -0
  6. data/lib/ferret/analysis/tokenizers.rb +5 -5
  7. data/lib/ferret/document/document.rb +10 -13
  8. data/lib/ferret/index/compound_file_io.rb +12 -9
  9. data/lib/ferret/index/field_infos.rb +0 -6
  10. data/lib/ferret/index/index.rb +220 -102
  11. data/lib/ferret/index/index_reader.rb +22 -2
  12. data/lib/ferret/index/index_writer.rb +55 -14
  13. data/lib/ferret/index/multi_reader.rb +279 -279
  14. data/lib/ferret/index/segment_infos.rb +3 -3
  15. data/lib/ferret/index/segment_merger.rb +7 -6
  16. data/lib/ferret/index/segment_reader.rb +23 -7
  17. data/lib/ferret/index/segment_term_enum.rb +6 -7
  18. data/lib/ferret/index/term_buffer.rb +3 -5
  19. data/lib/ferret/index/term_doc_enum.rb +7 -2
  20. data/lib/ferret/index/term_infos_io.rb +15 -8
  21. data/lib/ferret/query_parser/query_parser.tab.rb +49 -45
  22. data/lib/ferret/search/boolean_query.rb +3 -4
  23. data/lib/ferret/search/boolean_scorer.rb +11 -11
  24. data/lib/ferret/search/caching_wrapper_filter.rb +1 -1
  25. data/lib/ferret/search/disjunction_sum_scorer.rb +9 -7
  26. data/lib/ferret/search/field_cache.rb +1 -2
  27. data/lib/ferret/search/field_sorted_hit_queue.rb +1 -1
  28. data/lib/ferret/search/fuzzy_term_enum.rb +64 -58
  29. data/lib/ferret/search/index_searcher.rb +16 -9
  30. data/lib/ferret/search/prefix_query.rb +7 -0
  31. data/lib/ferret/search/query_filter.rb +1 -1
  32. data/lib/ferret/search/term_scorer.rb +5 -1
  33. data/lib/ferret/search/top_docs.rb +12 -0
  34. data/lib/ferret/store/buffered_index_io.rb +5 -6
  35. data/lib/ferret/store/fs_store.rb +47 -33
  36. data/lib/ferret/store/ram_store.rb +2 -2
  37. data/lib/ferret/utils.rb +1 -0
  38. data/lib/ferret/utils/bit_vector.rb +20 -2
  39. data/lib/ferret/utils/thread_local.rb +28 -0
  40. data/lib/ferret/utils/weak_key_hash.rb +11 -2
  41. data/test/benchmark/tb_rw_vint.rb +1 -1
  42. data/test/functional/thread_safety_index_test.rb +81 -0
  43. data/test/functional/thread_safety_test.rb +137 -0
  44. data/test/test_all.rb +3 -7
  45. data/test/test_helper.rb +2 -1
  46. data/test/unit/index/tc_compound_file_io.rb +2 -2
  47. data/test/unit/index/tc_index.rb +128 -6
  48. data/test/unit/index/tc_index_reader.rb +1 -1
  49. data/test/unit/index/tc_segment_infos.rb +1 -1
  50. data/test/unit/index/th_doc.rb +1 -1
  51. data/test/unit/search/tc_index_searcher.rb +6 -0
  52. data/test/unit/store/tc_fs_store.rb +3 -3
  53. data/test/unit/utils/tc_bit_vector.rb +8 -0
  54. data/test/unit/utils/tc_thread.rb +61 -0
  55. data/test/unit/utils/tc_weak_key_hash.rb +2 -2
  56. data/test/utils/number_to_spoken.rb +132 -0
  57. metadata +7 -2
@@ -61,9 +61,9 @@ module Ferret
61
61
  @counter = 0
62
62
  end
63
63
 
64
- def clone
65
- clone = self.clone
66
- self.each_index {|i| clone[i] = self[i].clone}
64
+ def initialize_copy(o)
65
+ super
66
+ o.each_index {|i| self[i] = o[i].clone}
67
67
  end
68
68
 
69
69
  def read(directory)
@@ -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 = Array.new(IndexFileNames::COMPOUND_EXTENSIONS.length + @field_infos.size)
65
+ files = []
65
66
 
66
67
  # Basic files
67
- IndexFileNames::COMPOUND_EXTENSIONS.times do |i|
68
- files << @segment + "." + IndexFileNames::COMPOUND_EXTENSIONS[i]
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 + ".f#{i}"
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.length.times do |i|
81
- files << @segment + "." + IndexFileNames::VECTOR_EXTENSIONS[i]
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
- Thread.current["#{self.object_id}-tv_reader"] = nil # clear the cache
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.dir.exists?(si.name + ".cfs")
95
+ return si.directory.exists?(si.name + ".cfs")
92
96
  end
93
97
 
94
98
  def SegmentReader.has_separate_norms?(si)
95
- return (si.dir.list.select {|f| f =~ /^#{si.name}\.s/}).size > 0
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
- #return @xtv_reader ||= @tv_reader_orig.clone()
298
- tv_reader = Thread.current["#{self.object_id}-tv_reader"]
299
- if (tv_reader == nil)
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["#{self.object_id}-tv_reader"] = tv_reader
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 clone()
68
- clone = super
69
- clone.input = @input.clone
70
- clone.term_info = @term_info.clone
71
- clone.term_buffer = @term_buffer.clone
72
- clone.prev_buffer = @prev_buffer.clone
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)
@@ -71,12 +71,10 @@ module Ferret::Index
71
71
  end
72
72
  alias :term :to_term
73
73
 
74
- def clone()
75
- clone = TermBuffer.new()
76
- clone.set!(self)
77
- return clone
74
+ def initialize_copy(o)
75
+ set!(o)
78
76
  end
79
-
77
+
80
78
  def text_str()
81
79
  @text[0,@text_length]
82
80
  end
@@ -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
- term_enum = Thread.current["#{self.object_id}-term_enum"]
215
- if (term_enum == nil)
216
- term_enum = terms()
217
- @xterm_enum = Thread.current["#{self.object_id}-term_enum"] = term_enum
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..id2aa118b008', 'query_parser.y', 126
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
- attr_accessor :wild_lower
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..id2aa118b008
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