ferret 0.1.3 → 0.1.4

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