2009-06-23 15 views
4

Ich habe eine kleine Seite mit etwa 500 Fotos und 150 Besuchern pro Tag, die auf Dreamhost gehostet wird. Ich möchte eine einfache Suchmaschine hinzufügen, die nicht lange Prozesse ausführen müssen, die auf freigegebenen Host nicht zulässig sind. Foto, Photo.author.name, Photo.comments.content und viele andereSuche in Ruby On Rails

Gibt es eine Plugin, die helfen können:

sollte Die Suchmaschine verschiedenen Bereichen, die zu verschiedenen Modelle verarbeiten?

Antwort

4

Die Volltext-Suchfunktion von MySQL, die allgemein in jeder Shared Hosting-Umgebung verfügbar ist, ist eine großartige Möglichkeit, diese Art von Funktionalität hinzuzufügen. Der einzige Nachteil ist, dass es nur auf MyISAM-Tabellen funktioniert, die im Allgemeinen zugunsten von InnoDB veraltet sind.

Der Ansatz, den ich gesehen habe, wo ein gutes Beispiel die Wikipedia-Datenbankarchitektur ist, besteht darin, abgeleitete Kopien von Modelldatensätzen speziell für Suchzwecke zu erstellen. Diese müssen mit dem Hauptsatz synchronisiert werden, aber das ist leicht mit einem after_save-Handler oder einer einfachen SQL-Aktualisierungsanweisung möglich.

Ein Hinweis ist, dass ActiveRecord nicht in der Lage ist, Volltextindizes zu verstehen. Eine ziemlich hässliche Erweiterung ist erforderlich, um sie zusammenarbeiten zu machen, obwohl ich ein Beispiel zu tun haben in einer Sammlung von MySQL gebündelt Hacks:

http://github.com/theworkinggroup/rails_mysql_hacks/tree/master

1

acts_as_ferret wird Ihnen wahrscheinlich gut dienen.

Aber Ich weiß nicht, ob und wie Frettchen auf einem Setup wie das Ihre durchführen wird.

+0

Ich hatte den Eindruck, dass Ferret als Hintergrundprozess lief. – tadman

+0

Weiß jemand, ob Ferret einen Hintergrundprozess benötigt? – collimarco

+0

Sie müssen den DRb-Server in der Produktion ausführen. Frettchen ist ein Scheißkerl und du solltest nach etwas anderem suchen, das nicht so viele Probleme hat. –

0

Sie könnten in Sphinx/Denken Sphinx für die schnelle Volltext suchen möchten Suche.

Thinking Sphinx

Ich weiß nicht, ob Unix-Pakete zu installieren und diesen ganzen Prozess übertrieben für das, was Sie für auf Dreamhost suchen, aber es ist eine sehr schnelle und robuste Lösung, die Ihre Bedürfnisse gut in dem dient Zukunft.

+0

Sphinx funktioniert wirklich gut, aber braucht einen Daemon :( – collimarco

1

Frettchen oder Sphinx benötigen dedizierten Hintergrundprozess. Ihre einzige Option scheint wie MySQL-Volltextsuche mit richtigen Indizes.

2

Ich denke, dass das acts_as_indexed Plugin die beste Wette für Ihre Bedürfnisse ist. Es erfordert keinen separaten Server. Es erstellt seinen Index automatisch im Dateisystem. Auf einer Website, die der Ihren ähnlich war, war es schnell und einfach zu konfigurieren.