spec/functional/ignore_spec.rb in picky-4.13.0 vs spec/functional/ignore_spec.rb in picky-4.13.1

- old
+ new

@@ -4,11 +4,11 @@ # Shows that lists of categories can be ignored. # describe 'ignoring allocations/categories' do - it 'ignores categories/allocations correctly' do + it 'ignores single categories/allocations correctly' do index = Picky::Index.new :books do category :author category :title category :text end @@ -16,24 +16,22 @@ thing = Struct.new :id, :author, :title, :text index.add thing.new(1, 'peter', 'some title', 'some text') index.add thing.new(2, 'some name', 'some title', 'some text') try = Picky::Search.new index do - ignore [:author, :text], - :text, - [:text, :text] + ignore :text end # These categories/allocations are now removed. # try.search('some some').allocations.to_result.should == [ # [:books, 1.386, 2, [[:text, "some", "some"], [:text, "some", "some"]], [2, 1]], [:books, 1.386, 2, [[:title, "some", "some"]], [2, 1]], [:books, 1.386, 2, [ [:title, "some", "some"]], [2, 1]], [:books, 1.386, 2, [[:title, "some", "some"], [:title, "some", "some"]], [2, 1]], [:books, 0.693, 1, [[:title, "some", "some"], [:author, "some", "some"]], [2]], - # [:books, 0.693, 1, [[:author, "some", "some"], [:text, "some", "some"]], [2]], + [:books, 0.693, 1, [[:author, "some", "some"], ], [2]], [:books, 0.693, 1, [[:author, "some", "some"], [:title, "some", "some"]], [2]], [:books, 0.693, 1, [ [:author, "some", "some"]], [2]], [:books, 0.0, 1, [[:author, "some", "some"], [:author, "some", "some"]], [2]] ] end @@ -49,14 +47,14 @@ index.add thing.new(1, 'peter', 'some title', 'some text') index.add thing.new(2, 'some name', 'some title', 'some text') try = Picky::Search.new index do ignore [:author, :text], - [:text, :text] + [:text] end - # These allocations are now removed. + # These categories/allocations are now removed. # try.search('some some').allocations.to_result.should == [ # [:books, 1.386, 2, [[:text, "some", "some"], [:text, "some", "some"]], [2, 1]], [:books, 1.386, 2, [[:text, "some", "some"], [:title, "some", "some"]], [2, 1]], [:books, 1.386, 2, [[:title, "some", "some"], [:text, "some", "some"]], [2, 1]], @@ -65,69 +63,40 @@ # [:books, 0.693, 1, [[:author, "some", "some"], [:text, "some", "some"]], [2]], [:books, 0.693, 1, [[:author, "some", "some"], [:title, "some", "some"]], [2]], [:books, 0.693, 1, [[:text, "some", "some"], [:author, "some", "some"]], [2]], [:books, 0.0, 1, [[:author, "some", "some"], [:author, "some", "some"]], [2]] ] - end - - it 'keeps allocations correctly' do - index = Picky::Index.new :books do - category :author - category :title - category :text - end - - thing = Struct.new :id, :author, :title, :text - index.add thing.new(1, 'peter', 'some title', 'some text') - index.add thing.new(2, 'some name', 'some title', 'some text') - try = Picky::Search.new index do - only [:author, :text], - [:text, :text] - end - - # These allocations are now exclusively kept. + # These categories/allocations are now removed. # - try.search('some some').allocations.to_result.should == [ - [:books, 1.386, 2, [[:text, "some", "some"], [:text, "some", "some"]], [2, 1]], - # [:books, 1.386, 2, [[:text, "some", "some"], [:title, "some", "some"]], [2, 1]], - # [:books, 1.386, 2, [[:title, "some", "some"], [:text, "some", "some"]], [2, 1]], - # [:books, 1.386, 2, [[:title, "some", "some"], [:title, "some", "some"]], [2, 1]], - # [:books, 0.693, 1, [[:title, "some", "some"], [:author, "some", "some"]], [2]], - [:books, 0.693, 1, [[:author, "some", "some"], [:text, "some", "some"]], [2]], - # [:books, 0.693, 1, [[:author, "some", "some"], [:title, "some", "some"]], [2]], - # [:books, 0.693, 1, [[:text, "some", "some"], [:author, "some", "some"]], [2]], - # [:books, 0.0, 1, [[:author, "some", "some"], [:author, "some", "some"]], [2]] + try.search('some some some').allocations.to_result.should == [ + # [:books, 2.0789999999999997, 2, [[:text, "some", "some"], [:text, "some", "some"], [:text, "some", "some"]], [2, 1]], + [:books, 2.0789999999999997, 2, [[:text, "some", "some"], [:text, "some", "some"], [:title, "some", "some"]], [2, 1]], + [:books, 2.0789999999999997, 2, [[:text, "some", "some"], [:title, "some", "some"], [:text, "some", "some"]], [2, 1]], + [:books, 2.0789999999999997, 2, [[:text, "some", "some"], [:title, "some", "some"], [:title, "some", "some"]], [2, 1]], + [:books, 2.0789999999999997, 2, [[:title, "some", "some"], [:text, "some", "some"], [:text, "some", "some"]], [2, 1]], + [:books, 2.0789999999999997, 2, [[:title, "some", "some"], [:text, "some", "some"], [:title, "some", "some"]], [2, 1]], + [:books, 2.0789999999999997, 2, [[:title, "some", "some"], [:title, "some", "some"], [:title, "some", "some"]], [2, 1]], + [:books, 2.0789999999999997, 2, [[:title, "some", "some"], [:title, "some", "some"], [:text, "some", "some"]], [2, 1]], + # [:books, 1.386, 1, [[:author, "some", "some"], [:text, "some", "some"], [:text, "some", "some"]], [2]], + [:books, 1.386, 1, [[:author, "some", "some"], [:title, "some", "some"], [:title, "some", "some"]], [2]], + [:books, 1.386, 1, [[:title, "some", "some"], [:author, "some", "some"], [:title, "some", "some"]], [2]], + [:books, 1.386, 1, [[:title, "some", "some"], [:author, "some", "some"], [:text, "some", "some"]], [2]], + [:books, 1.386, 1, [[:title, "some", "some"], [:title, "some", "some"], [:author, "some", "some"]], [2]], + [:books, 1.386, 1, [[:author, "some", "some"], [:text, "some", "some"], [:title, "some", "some"]], [2]], + [:books, 1.386, 1, [[:text, "some", "some"], [:text, "some", "some"], [:author, "some", "some"]], [2]], + [:books, 1.386, 1, [[:title, "some", "some"], [:text, "some", "some"], [:author, "some", "some"]], []], + [:books, 1.386, 1, [[:author, "some", "some"], [:title, "some", "some"], [:text, "some", "some"]], []], + [:books, 1.386, 1, [[:text, "some", "some"], [:title, "some", "some"], [:author, "some", "some"]], []], + [:books, 1.386, 1, [[:text, "some", "some"], [:author, "some", "some"], [:text, "some", "some"]], []], + [:books, 1.386, 1, [[:text, "some", "some"], [:author, "some", "some"], [:title, "some", "some"]], []], + [:books, 0.693, 1, [[:title, "some", "some"], [:author, "some", "some"], [:author, "some", "some"]], []], + [:books, 0.693, 1, [[:text, "some", "some"], [:author, "some", "some"], [:author, "some", "some"]], []], + [:books, 0.693, 1, [[:author, "some", "some"], [:title, "some", "some"], [:author, "some", "some"]], []], + [:books, 0.693, 1, [[:author, "some", "some"], [:author, "some", "some"], [:title, "some", "some"]], []], + [:books, 0.693, 1, [[:author, "some", "some"], [:text, "some", "some"], [:author, "some", "some"]], []], + # [:books, 0.693, 1, [[:author, "some", "some"], [:author, "some", "some"], [:text, "some", "some"]], []], + [:books, 0.0, 1, [[:author, "some", "some"], [:author, "some", "some"], [:author, "some", "some"]], []] ] end - it 'performs far better' do - index = Picky::Index.new :books do - category :author - category :title - category :text - end - - thing = Struct.new :id, :author, :title, :text - index.add thing.new(1, 'peter', 'some title', 'some text') - index.add thing.new(2, 'some name', 'some title', 'some text') - index.add thing.new(3, 'peter', 'some title', 'some text') - index.add thing.new(4, 'some name', 'some title', 'some text') - index.add thing.new(5, 'peter', 'some title', 'some text') - index.add thing.new(6, 'some name', 'some title', 'some text') - index.add thing.new(7, 'peter', 'some title', 'some text') - index.add thing.new(8, 'some name', 'some title', 'some text') - - try = Picky::Search.new index - - # Reasonably fast. - # - performance_of { try.search('some some') }.should < 0.0005 - - try.only [:author, :text], - [:text, :text] - - # Much faster. - # - performance_of { try.search('some some') }.should < 0.000175 - end end