Koen's blog Profile Photo

Koen's blog

Ik typ. Ik typ voor mijn Sien, Arwen, Mila en Nienke.

Rails and MySQL full text search

We hebben in onze app eenvoudige full text search nodig. In “rails”:http//rubyonra… heb je dan plugins voor “Sphinx”:www.sphinxsearch.com/, “Ferret”:ferret.davebalmain.com/trac/ en “Solr”:lucene.apache.org/solr/. Maar je kan natuurlijk ook “die van MySQL”:dev.mysql.com/doc/refma… gebruiken.

MySQL full text search kan je enkel gebruiken met MyISAM tables. In ons geval is dat niet echt een probleem. Who needs transactions anyway? :P

Goed, we genereren een nieuwe migration om de table engine aan te passen en de fulltext index toe te voegen.

@execute “alter table mytable engine = MyISAM”@
@execute “alter table mytable add fulltext index fulltext_recipe (title, description)”@

Tof. Dat werkt allemaal, tot je in je testen ook de full text search wil gebruiken. @rake db:test:prepare@ werkt namelijk niet meer.

De “rails schema dumper”:http://api.rubyonrails.org/files/vendor/rails/activerecord/lib/active_record/schema_dumper_rb.html houdt geen rekening met de MySQL fulltext indexen, en blijkbaar heeft die ook niet gezien dat ik de table engine gewijzigd heb. Op zich is het normaal want het fulltext gebeuren is MySQL specifiek, maar wel vervelend als het in de weg zit.

Een korte zoektocht op the internets en kijk “Zak Mandhro”:mandhro.com/2006/11/2… had/heeft hetzelfde probleem en geeft ons “een pluginnetje”:http://www.mandhro.com/wp-content/uploads/2006/11/ar_mysql_full_text.zip.

Het werkt, iedereen tevreden (ik toch) en we kunnen verder testen.