diff --git a/lib/polecat/index_searcher.rb b/lib/polecat/index_searcher.rb index 5e41ea5..5244595 100644 --- a/lib/polecat/index_searcher.rb +++ b/lib/polecat/index_searcher.rb @@ -38,7 +38,7 @@ class Polecat def search query result = [] @reader.read.each do |doc| - result << doc if doc.attributes[@default_field].equals?(query) + result << doc if (doc.attributes[@default_field][:value] == (query)) end result end diff --git a/spec/index_searcher/search_spec.rb b/spec/index_searcher/search_spec.rb index bb6cdd4..c2accda 100644 --- a/spec/index_searcher/search_spec.rb +++ b/spec/index_searcher/search_spec.rb @@ -2,9 +2,31 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') describe "IndexSearcher#search" do let(:path) { prepare_index_dir } + let(:w) { Polecat::IndexWriter.new(path) } let(:s) { Polecat::IndexSearcher.new :path => path } - it "takes a string as an argument" do + it "returns an empty array when nothing was found" do s.search("foo").should == [] end + + context "searching on a filled index" do + before do + w.add Spec::FooDocument.new(:name => 'foo') + w.add Spec::FooDocument.new(:name => 'bar') + w.add Spec::FooDocument.new(:name => 'baz') + w.add Spec::FooDocument.new(:name => 'foobar') + w.write + end + + let :s do + Polecat::IndexSearcher.new( + :reader => w.create_reader, + :default_field => :name + ) + end + + it "returns an array of documents, when a document was found" do + s.search('foo').count.should == 1 + end + end end