Frage

Ich möchte in meiner Ruby on Rails-Anwendung eine Volltextsuche nach Daten durchführen.Welche Möglichkeiten gibt es?

War es hilfreich?

Lösung

Es stehen mehrere Optionen zur Verfügung und jede hat unterschiedliche Stärken und Schwächen.Wenn Sie die Volltextsuche hinzufügen möchten, ist es ratsam, die einzelnen Suchfunktionen ein wenig zu untersuchen und auszuprobieren, um zu sehen, wie gut sie in Ihrer Umgebung funktionieren.

MySQL verfügt über eine integrierte Unterstützung für die Volltextsuche.Es verfügt über Online-Unterstützung, was bedeutet, dass neue Datensätze, die zur Datenbank hinzugefügt werden, automatisch indiziert werden und in den Suchergebnissen verfügbar sind.Der Dokumentation hat mehr Details.

acts_as_tsearch bietet einen Wrapper für ähnliche integrierte Funktionen für neuere Versionen von PostgreSQL

Für andere Datenbanken müssen Sie andere Software verwenden.

Lucene ist ein beliebter Suchanbieter, der in Java geschrieben ist.Sie können Lucene über seinen Suchserver verwenden Solr mit Rails unter Verwendung acts_as_solr.

Wenn Sie Java nicht verwenden möchten, gibt es eine Portierung von Lucene auf Ruby namens Frettchen.Unterstützung für Rails wird mit hinzugefügt acts_as_ferret Plugin.

Xapian ist eine weitere gute Option und wird in Rails mit unterstützt acts_as_xapian Plugin.

Schließlich ist meine bevorzugte Wahl Sphinx Verwendung der Ultrasphinx Plugin.Es ist extrem schnell und bietet viele Optionen zum Indizieren und Durchsuchen Ihrer Datenbanken, wird jedoch nicht mehr aktiv gepflegt.

Ein weiteres Plugin für Sphinx ist Denkende Sphinx Das hat viel Positives Rückmeldung.Der Einstieg ist mit Thinking Sphinx etwas einfacher als mit Ultrasphinx.Ich würde vorschlagen, beide Plugins zu untersuchen, um herauszufinden, welches besser zu Ihrem Projekt passt.

Andere Tipps

Ich kann Sphinx empfehlen.Ryan Bates hat einen tollen Screencast über die Verwendung des Thinking Sphinx-Plugins zum Erstellen einer Volltextsuchlösung.

Sie können Ferret (das in Ruby geschriebene Lucene) verwenden.Es lässt sich mithilfe des Acts_as_ferret-Mixins nahtlos in Rails integrieren.Werfen Sie einen Blick auf „So integrieren Sie Frettchen in Schienen".Eine Alternative ist Sphinx.

Ich habe eine zusammengestellt Liste der verschiedenen Ruby on Rails-Suchoptionen in dieser anderen Frage.Ich bin mir nicht sicher, wie und ob ich unsere Fragen kombinieren soll.

Es hängt davon ab, welche Datenbank Sie verwenden.Ich würde die Verwendung von Solr empfehlen, da es viele nette Optionen bietet.Der Nachteil ist, dass Sie dafür einen separaten Prozess ausführen müssen.Ich habe auch Ferret verwendet, fand es jedoch in Bezug auf den Multithread-Zugriff auf den Index weniger stabil.Ich habe Sphinx nicht ausprobiert, da es nur mit MySQL und Postgres funktioniert.

Nur eine Anmerkung zum späteren Nachschlagen:Ultra Sphinx wird nicht mehr gewartet.Die denkende Sphinx ist ihr Ersatz.Obwohl es zu diesem Zeitpunkt an einigen Funktionen mangelt, wie z. B. dem Auszug, den Ultra Sphinx hatte, macht es dies durch andere Funktionen wett.

Ich würde „acts_as_ferret“ empfehlen, da ich es für das Scrumpad-Projekt bei der Arbeit verwende.Die Indizierung kann als separater Prozess erfolgen, der sicherstellt, dass wir unsere Anwendung während der Neuindizierung weiterhin verwenden können.Dies kann die Ausfallzeit der Website reduzieren.Auch die Suche ist viel schneller.Sie können mehrere Modelle gleichzeitig durchsuchen und Ihre Ergebnisse nach den von Ihnen bevorzugten Feldern sortieren lassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top