ferret 0.1.1 → 0.1.2

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.
@@ -96,7 +96,7 @@ module Ferret::Search
96
96
  buffer << (@include_lower ? "[" : "{")
97
97
  buffer << @lower_term
98
98
  else
99
- buffer << "|"
99
+ buffer << "<"
100
100
  end
101
101
 
102
102
  buffer << " " if @upper_term and @lower_term
@@ -105,7 +105,7 @@ module Ferret::Search
105
105
  buffer << @upper_term
106
106
  buffer << (@include_upper ? "]" : "}")
107
107
  else
108
- buffer << "|"
108
+ buffer << ">"
109
109
  end
110
110
 
111
111
  if boost() != 1.0
@@ -4,3 +4,10 @@ $:.unshift File.join(File.dirname(__FILE__), '../ext')
4
4
  require 'test/unit'
5
5
  require 'ferret'
6
6
  require 'test/unit/index/th_doc'
7
+
8
+ def load_test_dir(dir)
9
+ dir = File.join(File.dirname(__FILE__), dir)
10
+ Dir.foreach(dir) do |file|
11
+ require File.join(dir, file) if file =~ /^t[mcs]_.*\.rb$/
12
+ end
13
+ end
@@ -72,14 +72,14 @@ class IndexTest < Test::Unit::TestCase
72
72
 
73
73
  def do_test_index_with_doc_array(index)
74
74
  data = [
75
- {"def_field" => "one two", :id => "me"},
76
- {"def_field" => "one", :field2 => "three"},
75
+ {"def_field" => "one two multi", :id => "me"},
76
+ {"def_field" => "one", :field2 => "three multi"},
77
77
  {"def_field" => "two"},
78
78
  {"def_field" => "one", :field2 => "four"},
79
79
  {"def_field" => "one two"},
80
80
  {"def_field" => "two", :field2 => "three", "field3" => "four"},
81
- {"def_field" => "one"},
82
- {"def_field" => "two", :field2 => "three", "field3" => "five"}
81
+ {"def_field" => "one multi2"},
82
+ {"def_field" => "two", :field2 => "three multi2", "field3" => "five multi"}
83
83
  ]
84
84
  data.each {|doc| index << doc }
85
85
  q = "one AND two"
@@ -90,6 +90,10 @@ class IndexTest < Test::Unit::TestCase
90
90
  check_results(index, q, [0, 1, 3, 4, 6, 7])
91
91
  q = "two AND (field3:f*)"
92
92
  check_results(index, q, [5, 7])
93
+ q = "*:(multi OR multi2)"
94
+ check_results(index, q, [0, 1, 6, 7])
95
+ q = "field2|field3:(multi OR multi2)"
96
+ check_results(index, q, [1, 7])
93
97
  doc = index[5]
94
98
  assert_equal("three", index[5]["field2"])
95
99
  assert(!index.has_deletions?)
@@ -99,6 +103,7 @@ class IndexTest < Test::Unit::TestCase
99
103
  assert(index.has_deletions?)
100
104
  assert(index.deleted?(5))
101
105
  assert_equal(7, index.size)
106
+ q = "two AND (field3:f*)"
102
107
  check_results(index, q, [7])
103
108
  doc["field2"] = "dave"
104
109
  index << doc
@@ -114,7 +119,7 @@ class IndexTest < Test::Unit::TestCase
114
119
  assert(! index.deleted?(7))
115
120
  t = Term.new("field2", "four")
116
121
  assert_equal("one", index[t]["def_field"])
117
- assert_equal("one two", index["me"]["def_field"])
122
+ assert_equal("one two multi", index["me"]["def_field"])
118
123
  index.delete("me")
119
124
  assert(index.deleted?(0))
120
125
  end
@@ -1,12 +1,15 @@
1
1
  require File.dirname(__FILE__) + "/../../test_helper"
2
2
 
3
3
  class MultipleTermDocPosEnumTest < Test::Unit::TestCase
4
+ include Ferret::Index
4
5
  include Ferret::Search
5
6
  include Ferret::Analysis
6
7
 
7
8
  def setup()
8
9
  @dir = Ferret::Store::RAMDirectory.new()
9
- iw = IndexWriter.new(@dir, WhiteSpaceAnalyzer.new(), true, false)
10
+ iw = IndexWriter.new(@dir,
11
+ :analyzer => WhiteSpaceAnalyzer.new(),
12
+ :create_if_missing => true)
10
13
  @documents = IndexTestHelper.prepare_search_docs()
11
14
  @documents.each { |doc| iw << doc }
12
15
  iw.close()
@@ -2,12 +2,8 @@ require File.dirname(__FILE__) + "/../../test_helper"
2
2
 
3
3
  class QueryParserTest < Test::Unit::TestCase
4
4
 
5
-
6
- def setup()
7
- @parser = Ferret::QueryParser.new("xxx")
8
- end
9
-
10
5
  def test_strings()
6
+ parser = Ferret::QueryParser.new("xxx", :fields => ["f1", "f2", "f3"])
11
7
  pairs = [
12
8
  ['word', 'word'],
13
9
  ['field:word', 'field:word'],
@@ -24,14 +20,14 @@ class QueryParserTest < Test::Unit::TestCase
24
20
  ['{aaa bbb]', '{aaa bbb]'],
25
21
  ['field:[aaa bbb}', 'field:[aaa bbb}'],
26
22
  ['{aaa bbb}', '{aaa bbb}'],
27
- ['{aaa|', '{aaa|'],
28
- ['[aaa|', '[aaa|'],
29
- ['field:|aaa}', 'field:|aaa}'],
30
- ['|aaa]', '|aaa]'],
31
- ['>aaa', '{aaa|'],
32
- ['>=aaa', '[aaa|'],
33
- ['<aaa', '|aaa}'],
34
- ['field:<=aaa', 'field:|aaa]'],
23
+ ['{aaa>', '{aaa>'],
24
+ ['[aaa>', '[aaa>'],
25
+ ['field:<aaa}', 'field:<aaa}'],
26
+ ['<aaa]', '<aaa]'],
27
+ ['>aaa', '{aaa>'],
28
+ ['>=aaa', '[aaa>'],
29
+ ['<aaa', '<aaa}'],
30
+ ['field:<=aaa', 'field:<aaa]'],
35
31
  ['REQ one REQ two', '+one +two'],
36
32
  ['REQ one two', '+one two'],
37
33
  ['one REQ two', 'one +two'],
@@ -73,12 +69,44 @@ class QueryParserTest < Test::Unit::TestCase
73
69
  ['asdf?*?asd*dsf?asfd*asdf?', 'asdf?*?asd*dsf?asfd*asdf?'],
74
70
  ['field:a* AND field:(b*)', '+field:a* +field:b*'],
75
71
  ['field:abc~ AND field:(b*)', '+field:abc~0.5 +field:b*'],
76
- ['asdf?*?asd*dsf?asfd*asdf?^20.0', 'asdf?*?asd*dsf?asfd*asdf?^20.0']
72
+ ['asdf?*?asd*dsf?asfd*asdf?^20.0', 'asdf?*?asd*dsf?asfd*asdf?^20.0'],
73
+
74
+ ['*:xxx', 'f1:xxx f2:xxx f3:xxx'],
75
+ ['f1|f2:xxx', 'f1:xxx f2:xxx'],
76
+
77
+ ['*:asd~0.2', 'f1:asd~0.2 f2:asd~0.2 f3:asd~0.2'],
78
+ ['f1|f2:asd~0.2', 'f1:asd~0.2 f2:asd~0.2'],
79
+
80
+ ['*:a?d*^20.0', '(f1:a?d* f2:a?d* f3:a?d*)^20.0'],
81
+ ['f1|f2:a?d*^20.0', '(f1:a?d* f2:a?d*)^20.0'],
82
+
83
+ ['*:"asdf <> xxx|yyy"', 'f1:"asdf <> xxx|yyy" f2:"asdf <> xxx|yyy" f3:"asdf <> xxx|yyy"'],
84
+ ['f1|f2:"asdf <> xxx|yyy"', 'f1:"asdf <> xxx|yyy" f2:"asdf <> xxx|yyy"'],
85
+
86
+ ['*:[bbb xxx]', 'f1:[bbb xxx] f2:[bbb xxx] f3:[bbb xxx]'],
87
+ ['f1|f2:[bbb xxx]', 'f1:[bbb xxx] f2:[bbb xxx]'],
88
+
89
+ ['*:(xxx AND bbb)', '+(f1:xxx f2:xxx f3:xxx) +(f1:bbb f2:bbb f3:bbb)'],
90
+ ['f1|f2:(xxx AND bbb)', '+(f1:xxx f2:xxx) +(f1:bbb f2:bbb)'],
91
+ ['asdf?*?asd*dsf?asfd*asdf?^20.0', 'asdf?*?asd*dsf?asfd*asdf?^20.0'],
92
+ ['"onewordphrase"', 'onewordphrase']
77
93
  ]
94
+
95
+ pairs.each do |pair|
96
+ assert_equal(pair[1], parser.parse(pair[0]).to_s(parser.default_field))
97
+ end
98
+ end
78
99
 
100
+ def test_qp_with_standard_analyzer()
101
+ parser = Ferret::QueryParser.new("xxx", :fields => ["f1", "f2", "f3"],
102
+ :analyzer => Ferret::Analysis::StandardAnalyzer.new)
103
+ pairs = [
104
+ ['key:1234', 'key:1234'],
105
+ ['key:(1234)', 'key:1234']
106
+ ]
79
107
 
80
108
  pairs.each do |pair|
81
- assert_equal(pair[1], @parser.parse(pair[0]).to_s(@parser.default_field))
109
+ assert_equal(pair[1], parser.parse(pair[0]).to_s(parser.default_field))
82
110
  end
83
111
  end
84
112
  end
@@ -95,13 +95,13 @@ module StoreTest
95
95
  end
96
96
 
97
97
  def test_rw_utf8_strings
98
- text = '�� ������'
98
+ text = '³³ ÄÄÄÄÄÄ 道德經'
99
99
  ostream = @dir.create_output("rw_utf8_strings.test")
100
100
  ostream.write_string(text)
101
101
  ostream.write_string(text*100)
102
102
  ostream.close
103
103
  istream = @dir.open_input("rw_utf8_strings.test")
104
- assert_equal(text, istream.read_string, "Short string test failed")
104
+ assert_equal(text, x = istream.read_string, "Short string test failed")
105
105
  assert_equal(text*100, istream.read_string, "Short string test failed")
106
106
  istream.close
107
107
  end
@@ -1,16 +1,2 @@
1
- $:.unshift File.dirname(__FILE__)
2
1
  require File.join(File.dirname(__FILE__), "../test_helper.rb")
3
-
4
- require 'analysis/tc_letter_tokenizer'
5
- require 'analysis/tc_white_space_tokenizer'
6
- require 'analysis/tc_lower_case_tokenizer'
7
- require 'analysis/tc_word_list_loader'
8
- require 'analysis/tc_lower_case_filter'
9
- require 'analysis/tc_stop_filter'
10
- require 'analysis/tc_porter_stem_filter'
11
- require 'analysis/tc_analyzer'
12
- require 'analysis/tc_stop_analyzer'
13
- require 'analysis/tc_white_space_analyzer'
14
- require 'analysis/tc_per_field_analyzer_wrapper'
15
- require 'analysis/tc_standard_tokenizer'
16
- require 'analysis/tc_standard_analyzer'
2
+ load_test_dir('unit/analysis')
@@ -1,4 +1,2 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
- require 'document/tc_field.rb'
4
- require 'document/tc_document.rb'
1
+ require File.join(File.dirname(__FILE__), "../test_helper.rb")
2
+ load_test_dir('unit/document')
@@ -1,18 +1,2 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
- require 'index/tc_compound_file_io.rb'
4
- require 'index/tc_field_infos.rb'
5
- require 'index/tc_fields_io.rb'
6
- require 'index/tc_index_writer.rb'
7
- require 'index/tc_index_reader.rb'
8
- require 'index/tc_segment_infos.rb'
9
- require 'index/tc_segment_term_docs.rb'
10
- require 'index/tc_segment_term_enum.rb'
11
- require 'index/tc_segment_term_vector.rb'
12
- require 'index/tc_term.rb'
13
- require 'index/tc_term_buffer.rb'
14
- require 'index/tc_term_info.rb'
15
- require 'index/tc_term_infos_io.rb'
16
- require 'index/tc_term_vector_offset_info.rb'
17
- require 'index/tc_term_vectors_io.rb'
18
- require 'index/tc_index.rb'
1
+ require File.join(File.dirname(__FILE__), "../test_helper.rb")
2
+ load_test_dir('unit/index')
@@ -1,3 +1,2 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
- require 'query_parser/tc_query_parser.rb'
1
+ require File.join(File.dirname(__FILE__), "../test_helper.rb")
2
+ load_test_dir('unit/query_parser')
@@ -1,10 +1,2 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
- require 'search/tc_similarity.rb'
4
- require 'search/tc_index_searcher.rb'
5
- require 'search/tc_fuzzy_query.rb'
6
- require 'search/tc_sort_field.rb'
7
- require 'search/tc_sort.rb'
8
- require 'search/tc_search_and_sort.rb'
9
- require 'search/tc_filter.rb'
10
- require 'search/tc_spans.rb'
1
+ require File.join(File.dirname(__FILE__), "../test_helper.rb")
2
+ load_test_dir('unit/search')
@@ -1,6 +1,2 @@
1
- $:.unshift File.dirname(__FILE__)
2
1
  require File.join(File.dirname(__FILE__), "../test_helper.rb")
3
-
4
-
5
- require 'store/tc_fs_store'
6
- require 'store/tc_ram_store'
2
+ load_test_dir('unit/store')
@@ -1,10 +1,2 @@
1
- $:.unshift File.dirname(__FILE__)
2
1
  require File.join(File.dirname(__FILE__), "../test_helper.rb")
3
-
4
- require 'utils/tc_string_helper'
5
- require 'utils/tc_priority_queue'
6
- require 'utils/tc_bit_vector'
7
- require 'utils/tc_date_tools.rb'
8
- require 'utils/tc_number_tools.rb'
9
- require 'utils/tc_parameter.rb'
10
- require 'utils/tc_weak_key_hash.rb'
2
+ load_test_dir('unit/utils')
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: ferret
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.1
7
- date: 2005-10-22 00:00:00 +09:00
6
+ version: 0.1.2
7
+ date: 2005-10-25 00:00:00 +09:00
8
8
  summary: Ruby indexing library.
9
9
  require_paths:
10
10
  - lib