xapian-fu 1.2 → 1.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,7 @@
1
+ === 1.3 (7th July 2011)
2
+
3
+ * Support for phrase searching
4
+
1
5
  === 1.2 (5th July 2011)
2
6
 
3
7
  * Support for synonyms (Damian Janowski)
data/README.rdoc CHANGED
@@ -139,7 +139,7 @@ Wildcards
139
139
 
140
140
  Phrase searches
141
141
 
142
- db.search("'someone dropped a steamer in the gene pool'")
142
+ db.search("'a steamer in the gene pool'", :phrase => true)
143
143
 
144
144
  And any combinations of the above:
145
145
 
@@ -184,7 +184,7 @@ perhaps by reindexing once in a while.
184
184
  = More Info
185
185
 
186
186
  Author:: John Leach (mailto:john@johnleach.co.uk)
187
- Copyright:: Copyright (c) 2009-2010 John Leach
187
+ Copyright:: Copyright (c) 2009-2011 John Leach
188
188
  License:: MIT (The Xapian library is GPL)
189
189
  Mailing list:: http://rubyforge.org/mailman/listinfo/xapian-fu-discuss
190
190
  Web page:: http://johnleach.co.uk/documents/xapian-fu
@@ -120,7 +120,7 @@ module XapianFu #:nodoc:
120
120
  if @flags
121
121
  @flags
122
122
  else
123
- valid_flags = [:boolean, :boolean_anycase, :wildcards, :lovehate, :spelling, :pure_not, :synonyms]
123
+ valid_flags = [:boolean, :boolean_anycase, :wildcards, :lovehate, :spelling, :pure_not, :synonyms, :phrase]
124
124
  @flags = valid_flags.delete_if { |vf| not @options[vf] }
125
125
  end
126
126
  end
@@ -136,6 +136,7 @@ module XapianFu #:nodoc:
136
136
  qflags |= Xapian::QueryParser::FLAG_SPELLING_CORRECTION if flags.include?(:spelling)
137
137
  qflags |= Xapian::QueryParser::FLAG_PURE_NOT if flags.include?(:pure_not)
138
138
  qflags |= Xapian::QueryParser::FLAG_AUTO_SYNONYMS if flags.include?(:synonyms)
139
+ qflags |= Xapian::QueryParser::FLAG_PHRASE if flags.include?(:phrase)
139
140
  qflags
140
141
  end
141
142
 
@@ -292,6 +292,22 @@ describe XapianDb do
292
292
  results.corrected_query.should == ""
293
293
  end
294
294
 
295
+ it "should do phrase matching when the :phrase option is set" do
296
+ xdb = XapianDb.new
297
+ doc1 = xdb << "the dog growls at the guitar"
298
+ doc2 = xdb << "the cat growls at the dog"
299
+ xdb.search('"the dog growls"').should == [doc1, doc2]
300
+ xdb.search('"the dog growls"', :phrase => true).should == [doc1]
301
+ end
302
+
303
+ it "should do phrase matching on fields" do
304
+ xdb = XapianDb.new(:fields => [:title])
305
+ doc1 = xdb << { :title => "the dog growls", :body => "at the guitar" }
306
+ doc2 = xdb << { :title => "the cat growls", :body => "at the dog" }
307
+ xdb.search('title:"the dog growls"', :phrase => true).should == [doc1]
308
+ xdb.search('title:"at the guitar"', :phrase => true).should == []
309
+ end
310
+
295
311
 
296
312
  it "should do phrase matching by default when then :default_op option is :phrase" do
297
313
  pending
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xapian-fu
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 2
9
- version: "1.2"
8
+ - 3
9
+ version: "1.3"
10
10
  platform: ruby
11
11
  authors:
12
12
  - John Leach
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-07-05 00:00:00 Z
17
+ date: 2011-07-07 00:00:00 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: rspec