Posts filed under 'Ferret'

Stemming mit ActsAsFerret

Stemming ist ein Verfahren, um – mit Hilfe von Algorithmen – den Wortstamm von Wörtern zu ermitteln. Dies wird z.B. bei Suchmaschinen angewendet, damit die Suche nicht an einem eingebenen Wort scheitert, dass zwar nicht in der Datenbank als solches zu finden ist, wohl aber dessen Wortstamm, z.B. Gitarren => Gitarre.

Ferret und ActsAsFerret bietet eine einfach zu konfigurierende Unterstützung für dieses Stemming:

Eine Datei

stemming_analyzer.rb

im lib/-Verzeichnis anlegen:

require 'rubygems'
require 'ferret'

class StemmingAnalyzer < Ferret::Analysis::Analyzer
  include Ferret::Analysis
  def initialize(stop_words = FULL_GERMAN_STOP_WORDS)
    @stop_words = stop_words
  end
  def token_stream(field, str)
    StemFilter.new(StopFilter.new(LowerCaseFilter.new(StandardTokenizer.new(str)),@stop_words), 'de')
  end
end

Im zu durchsuchenden Model dann folgendes:

acts_as_ferret :fields => {
  :bandname => {}, :firstName_if_public => {},
  :tag_list => {}, :comment_list => {}
}, :ferret => {
    :analyzer => StemmingAnalyzer.new, :remote => true}

Dabei ist darauf zu achten, dass, wenn ihr den DrB-Server verwenden wollt, :remote => true innerhalb des :ferret-Attributs sein muss. Bei uns war dieses ausserhalb, woraufhin bei einem Aufruf von XYZ.rebuild_index nur nil zurückgeliefert wurde und Stemming nicht funktionierte.

Über script/console kann dann schön getestet werden. Wenn man nebenbei noch die log/ferret_server.log anschaut, kann man sehen, dass jetzt automatisch Suchwörter wie „und“ in XYZ.find_by_contents(„Gitarren und Geigen“) entfernt werden. Ausserdem kann man sehen, dass z.B. „Geigen“ auf „Geig“ reduziert wird, womit sich dann auch Wörter wir Geige finden lassen.

1 comment Januar 17, 2008


RSS Der Gleisarbeiter Blog

 

November 2009
M D M D F S S
« Jan    
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Kategoriewolke

Cocoa Ferret Flash Flex Goldberg Java Mac Private RadRails Rails Ruby Ruby/Rails Spiele Sun Test Testing Uncategorized

Neueste Artikel

Neueste Kommentare

ffaerber zu can’t find header files …
sam zu Stemming mit ActsAsFerret
humpaaa zu Flex & RubyOnRails
gleisarbeiter zu Ruby & Cocoa auf Mac …
schroedi zu Ruby & Cocoa auf Mac …

Blog Stats

Blogroll