Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

106 lines (89 sloc) 2.978 kb
# encoding: utf-8
#
require 'spec_helper'
require 'stemmer'
require 'lingua/stemmer'
describe 'stemming' do
let(:stemmer) {
# Fast stemmer does not conform with the API.
#
module Stemmer
class << self
alias_method :stem, :stem_word
end
end
Stemmer
}
describe 'examples' do
it 'works correctly' do
tokenizer = Picky::Tokenizer.new(stems_with: stemmer)
# Is this really correct? Shouldn't we split after normalizing?
#
# Yes – we split using more information.
#
tokenizer.stem('computers').should == 'comput'
tokenizer.stem('computing').should == 'comput'
tokenizer.stem('computed').should == 'comput'
tokenizer.stem('computer').should == 'comput'
end
# This tests the stems_with option.
#
it 'stems right (API conform Stemmer)' do
# Fix the Stemmer API.
#
module Stemmer
class << self
# stem_word is a bit silly, what else would you stem???
#
alias_method :stem, :stem_word
end
end
index = Picky::Index.new :stemming do
# Be aware that if !s are not removed from
# eg. Lemming!, then stemming won't work.
#
indexing removes_characters: /[^a-z\s]/i,
stems_with: Stemmer
category :text
end
index.replace_from id: 1, text: "Hello good Sirs, these things here need stems to work!"
index.replace_from id: 2, text: "Stemming Lemming!"
try = Picky::Search.new index
# If you don't stem in the search, it should not be found!
#
try.search("text:stemming").ids.should == []
try = Picky::Search.new index do
searching stems_with: Stemmer
end
# With stemming in search AND indexing, it works :)
#
try.search("text:stemming").ids.should == [2, 1]
try.search("text:lem").ids.should == [2]
end
# This tests the stems_with option.
#
it 'stems right (Lingua::Stemmer.new)' do
index = Picky::Index.new :stemming do
# Be aware that if !s are not removed from
# eg. Lemming!, then stemming won't work.
#
indexing removes_characters: /[^a-z\s]/i,
stems_with: Lingua::Stemmer.new
category :text
end
index.replace_from id: 1, text: "Hello good Sirs, these things here need stems to work!"
index.replace_from id: 2, text: "Stemming Lemming!"
try = Picky::Search.new index
# If you don't stem in the search, it should not be found!
#
try.search("text:stemming").ids.should == []
try = Picky::Search.new index do
searching stems_with: Lingua::Stemmer.new
end
# With stemming in search AND indexing, it works :)
#
try.search("text:stemming").ids.should == [2, 1]
try.search("text:lem").ids.should == [2]
end
end
end
Jump to Line
Something went wrong with that request. Please try again.