spec/functional/ignore_spec.rb in picky-4.12.5 vs spec/functional/ignore_spec.rb in picky-4.12.6

- old
+ new

@@ -4,10 +4,42 @@ # Shows that lists of categories can be ignored. # describe 'ignoring allocations/categories' do + it 'ignores categories/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 + ignore [:author, :text], + :text, + [:text, :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"], [:title, "some", "some"]], [2]], + [:books, 0.693, 1, [ [:author, "some", "some"]], [2]], + [:books, 0.0, 1, [[:author, "some", "some"], [:author, "some", "some"]], [2]] + ] + end + it 'ignores allocations correctly' do index = Picky::Index.new :books do category :author category :title category :text @@ -64,7 +96,38 @@ [: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 '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