ferret 0.10.14 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -66,6 +66,10 @@ class IndexTest < Test::Unit::TestCase
66
66
  assert_equal("four", index[5]["field3"])
67
67
  q = "field3:f*"
68
68
  check_results(index, q, [5, 7])
69
+ q = "*:(one AND NOT three)"
70
+ check_results(index, q, [0, 3, 4, 6])
71
+ q = "*:(one AND (NOT three))"
72
+ check_results(index, q, [0, 3, 4, 6])
69
73
  q = "two AND field3:f*"
70
74
  check_results(index, q, [5, 7])
71
75
  assert_equal("five", index.doc(7)["field3"])
@@ -146,7 +150,7 @@ class IndexTest < Test::Unit::TestCase
146
150
  fs_path = File.expand_path(File.join(File.dirname(__FILE__), '../../temp/fsdir'))
147
151
 
148
152
  Dir[File.join(fs_path, "*")].each {|path| begin File.delete(path) rescue nil end}
149
- assert_raise(IOError) do
153
+ assert_raise(FileNotFoundError) do
150
154
  Index.new(:path => fs_path,
151
155
  :create_if_missing => false,
152
156
  :default_field => :xxx)
@@ -534,7 +538,7 @@ class IndexTest < Test::Unit::TestCase
534
538
  assert_equal("20051023", index[top_docs.hits[2].doc][:date])
535
539
  top_docs = index.search("one two three four",
536
540
  :sort => [sf_date, SortField::SCORE])
537
- return
541
+
538
542
  assert_equal("19390912", index[top_docs.hits[0].doc][:date])
539
543
  assert_equal("three four", index[top_docs.hits[0].doc][:content])
540
544
  assert_equal("19390912", index[top_docs.hits[1].doc][:date])
@@ -21,10 +21,10 @@ class IndexWriterTest < Test::Unit::TestCase
21
21
  assert(! wlock.locked?)
22
22
  assert(! clock.locked?)
23
23
  iw = IndexWriter.new(:dir => @dir, :create => true)
24
- assert(@dir.exists?("segments"))
24
+ assert(@dir.exists?("segments.gen"))
25
25
  assert(wlock.locked?)
26
26
  iw.close()
27
- assert(@dir.exists?("segments"))
27
+ assert(@dir.exists?("segments.gen"))
28
28
  assert(! wlock.locked?)
29
29
  assert(! clock.locked?)
30
30
  end
@@ -34,6 +34,7 @@ class QueryParserTest < Test::Unit::TestCase
34
34
  ['>aaa', '{aaa>'],
35
35
  ['>=aaa', '[aaa>'],
36
36
  ['<aaa', '<aaa}'],
37
+ ['[A>', '[a>'],
37
38
  ['field:<=aaa', 'field:<aaa]'],
38
39
  ['REQ one REQ two', '+one +two'],
39
40
  ['REQ one two', '+one two'],
@@ -50,6 +51,7 @@ class QueryParserTest < Test::Unit::TestCase
50
51
  ['NOT one NOT two', '-one -two'],
51
52
  ['NOT one two', '-one two'],
52
53
  ['one NOT two', 'one -two'],
54
+ ['NOT two', '-two +*'],
53
55
  ['one two', 'one two'],
54
56
  ['one OR two', 'one two'],
55
57
  ['one AND two', '+one +two'],
@@ -157,8 +159,10 @@ class QueryParserTest < Test::Unit::TestCase
157
159
 
158
160
  def do_test_query_parse_exception_raised(str)
159
161
  parser = Ferret::QueryParser.new(:default_field => "xxx",
160
- :fields => ["f1", "f2", "f3"])
161
- assert_raise(Ferret::QueryParser::QueryParseException) do
162
+ :fields => ["f1", "f2", "f3"],
163
+ :handle_parse_errors => false)
164
+ assert_raise(Ferret::QueryParser::QueryParseException,
165
+ str + " should have failed") do
162
166
  parser.parse(str)
163
167
  end
164
168
  end
@@ -190,13 +194,24 @@ class QueryParserTest < Test::Unit::TestCase
190
194
 
191
195
  def test_bad_queries
192
196
  parser = Ferret::QueryParser.new(:default_field => "xxx",
193
- :fields => ["f1", "f2"],
194
- :handle_parse_errors => true)
197
+ :fields => ["f1", "f2"])
195
198
 
196
199
  pairs = [
197
200
  ['::*word', 'word'],
198
201
  ['::*&)(*^&*(', ''],
199
- ['::*&one)(*two(*&"', '"one two"~1']
202
+ ['::*&one)(*two(*&"', '"one two"~1'],
203
+ [':', ''],
204
+ ['[, ]', ''],
205
+ ['{, }', ''],
206
+ ['!', ''],
207
+ ['+', ''],
208
+ ['~', ''],
209
+ ['^', ''],
210
+ ['-', ''],
211
+ ['|', ''],
212
+ ['<, >', ''],
213
+ ['=', ''],
214
+ ['<script>', 'script']
200
215
  ]
201
216
 
202
217
  pairs.each do |query_str, expected|
@@ -34,7 +34,9 @@ class SearcherTest < Test::Unit::TestCase
34
34
  end
35
35
 
36
36
  def check_hits(query, expected, top=nil, total_hits=nil)
37
- top_docs = @searcher.search(query)
37
+ options = {}
38
+ options[:limit] = expected.size + 1 if (expected.size > 10)
39
+ top_docs = @searcher.search(query, options)
38
40
  assert_equal(expected.length, top_docs.hits.size)
39
41
  assert_equal(top, top_docs.hits[0].doc) if top
40
42
  if total_hits
@@ -54,6 +54,8 @@ module SearcherTests
54
54
  check_docs(tq, {:limit => 6, :offset => 2}, expected[2,6])
55
55
  check_docs(tq, {:limit => 2, :offset => expected.length}, [])
56
56
  check_docs(tq, {:limit => 2, :offset => expected.length + 100}, [])
57
+ check_docs(tq, {:limit => :all}, expected)
58
+ check_docs(tq, {:limit => :all, :offset => 2}, expected[2..-1])
57
59
  end
58
60
 
59
61
  def test_multi_term_query
@@ -108,7 +110,7 @@ module SearcherTests
108
110
 
109
111
  bq = BooleanQuery.new()
110
112
  bq.add_query(tq2, :must_not)
111
- check_hits(bq, [])
113
+ check_hits(bq, [0,1,4,5,7,9,10,12,13,15,16,17])
112
114
 
113
115
  bq = BooleanQuery.new()
114
116
  bq.add_query(tq2, :should)
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: ferret
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.10.14
7
- date: 2007-01-16 00:00:00 +11:00
6
+ version: 0.11.0
7
+ date: 2007-02-25 00:00:00 +11:00
8
8
  summary: Ruby indexing library.
9
9
  require_paths:
10
10
  - lib
@@ -204,6 +204,7 @@ files:
204
204
  - test/threading/thread_safety_index_test.rb
205
205
  - test/threading/thread_safety_test.rb
206
206
  - test/threading/number_to_spoken.rb
207
+ - test/threading/thread_safety_read_write_test.rb
207
208
  test_files: []
208
209
 
209
210
  rdoc_options: