Frage

Es gibt mehrere Plugin-Optionen zum Einbau einer Suchmaschine in Ihre Ruby on Rails-Anwendung.Welches davon ist das Beste?

War es hilfreich?

Lösung

Denken Sphinx hat kürzere Syntax zu definieren, welche Felder und die Modelle indiziert sind.

Sowohl UltraSphinx und Sphinx Denken (vor kurzem) haben ultra-cooles Feature, das die geografische Nähe der Objekte erfolgt.

UltraSphinx hat lästige Probleme mit, wie es lädt Modelle (es wird nicht geladen gesamte Rails-Stack, so dass Sie seltsame und schwer bekommen könnten Fehler zu diagnostizieren, die durch Zugabe von expliziten require Aussagen behandelt werden).

Wir verwenden Denken Sphinx an neuen Projekten und UltraSphinx auf Projekte, die geo-Gehalt verwendet werden.

Andere Tipps

Diese Frage wurde bereits hier mit ausführlicheren Antworten.

Eine feste Option von einem meiner Freunde verwendet wird, ist Solr , eine Suchmaschine die ursprüngliche Java unter Verwendung von -basierte Lucene. Um es zu nutzen mit Rails, gibt es, natürlich ein acts_as Plugin, acts_as_solr .

Er stellte die Combo vor kurzem unter Montreal on Rails und bietet einen schönen und umfassenden Überblick über wie auf seinem Blog verwenden acts_as_solr.

Es unterstützt offenbar französisch Akzente sehr gut, auch.

Ich werde durch diesen Prozess genau so gerade jetzt, während ich nicht die tatsächliche Erfahrung, ich habe alle Optionen viele Stunden damit verbracht, zu erforschen. Hier ist, was ich bisher gelernt haben:

  • * Sphinx - guter Ruf für Geschwindigkeit und Funktionalität, sondern Sphinx muss integer Schlüssel und mein Modell verwendet GUID; ThinkingSphinx vor kurzem angekündigt, die Unterstützung für GeoSpatial
  • Acts_As_Solr - empfohlen von einem Freund mit einer High-Volume-Website; Original-Macher haben auf sie aufgehört zu arbeiten und Dokumentation ist schwer zu finden; erfordert ein Java-Servlet
  • Acts_As_Ferret - schaut einfach zu bedienen, aber viele Kritiker, die seine instabile sagen
  • Zwei andere mit begrenzten Informationen sind Acts_As_Indexed und Acts_As_Searchable

Ich habe eine Tabelle mit meinem Versuch, die Vor- und Nachteile aller von ihnen zu dokumentieren. Wenn jemand darin zu sehen, interessiert und / oder hilft mir es zu beheben, kontaktieren Sie mich einfach. Ich werde es irgendwo posten, sobald ich seine genaue kennen.

würde meine Empfehlung UltraSphinx oder Denken Sphinx zu versuchen, wenn Sie normale Primärschlüssel haben. Ich werde Acts_As_Xapian auf der Grundlage der guten Dokumentation, Feature-Set, um zu versuchen, und wie aktiv das Projekt zu sein scheint.

Ich habe nur die Ferret / acts_as_ferret Combo (legacy Entscheidung) auf einem Client-Projekt. Ich empfehle Blick auf den andere Optionen zuerst.

aaf ist sehr zerbrechlich und kann Ihre Rails-Anwendung zum Stillstand bringen, wenn Sie einen Fehler in der Config machen oder wenn aus irgendeinem Grunde treffen Sie einen Fehler in aaf.

In einem solchen Fall, anstatt einfach die Suchfunktion mit crapping aus, jeder Regler ein indiziertes Modell berührt wird vollständig fehlschlagen und eine Ausnahme ausgelöst. Welche ist baaad, hmkay?

Ich verwende die acts_as_xapian Plugin. Ich folgte diesem Tutorial:

http: / /locomotivation.com/2008/07/23/simple-ruby-on-rails-full-text-search-using-xapian

Funktioniert sehr gut.

Ich verwende acts_as_ferret. Es ist einfach zu konfigurieren und in der Regel schnell. Die eingebaute aktive Datensatz findet Funktionalität ist sehr nützlich: Sie Bedingungen gelten können oder kommen Sie mit anderen Modellen nach der Suche der passenden Datensätze gefunden.

Im Gegensatz zu sphinx, müssen Sie nicht alle Ihre Aufzeichnungen neu indizieren, wenn Sie neue Daten hinzufügen. Es gibt after_save und after_update Haken, die Ihren neuen Datensatz in die Frettchen db einfügen wird. Dies war eine der großen Verkaufsargumente für mich.

Wenn Sie Sie Ihre Daten-Mass-Index, Frettchen ist definitiv langsamer als acts_as_sphinx (um den Faktor 3). Ich beendete meine eigene Methode auf das Schreiben Modelle neu indizieren, die so schnell wie Sphinx arbeitet -. Es ist im Grunde preloads alle Daten aus der DB statt durch Rekord Rekord geht den neuen Index erstellen

Das Frettchen Dokumentation ist für die Grundlagen gut, aber es ist ein bisschen spärlich, wenn Sie in komplexere Suchanfragen, sortiert bekommen und mit einem DRB-Server einen Remote-Index hosten. Aber sagte, dass es fühlt sich ein viel reifes Produkt als acts_as_sphinx, obwohl ich Erfahrung mit Sphinx begrenzt habe.

Wenn Sie einen Shared-Hosting-Service wie ich (Bluehost) verwenden, können Sie Ihre Möglichkeiten, was die Anbieter Angebote begrenzt. In meinem Fall konnte ich nicht eine gute und zuverlässige Art und Weise zu starten und halten einen separaten Server läuft, wie Lucene oder Solr finden.

Deshalb ging ich mit Xapian und es arbeitet gut für mich. Es gibt 2 Plugins für Schienen ich recherchiert habe: acts_as_xapian und xapian_fu. Die erste wird erhalten gehen Sie schnell, aber es scheint nicht mehr gehalten werden. Ich habe gerade mit xapian_fu begonnen zu arbeiten.

Falls noch jemand Interesse hat, das Neueste ist jetzt zu verwenden elastische Suche.Dafür stehen Edelsteine ​​zur Verfügung Reifen oder elastische Suchschienen.Es basiert ebenfalls auf Lucene wie Solr und ist Java-basiert.Solr ist jetzt tatsächlich in dieses Projekt integriert ...

Ich habe Denken Sphinx benutzt und es scheint ziemlich gut, aber ich habe nicht die Zeit zu bewerten alle Optionen habe.

Ich empfehle Sphinx Denken. Es ist die schnellste Möglichkeit, meiner Meinung nach.

Ich habe verwendet Ferret und es funktionierte gut für meine Zwecke, aber ich habe nicht die anderen Optionen bewertet.

Eine Option, die ich nicht versucht haben, ist die C ++ basierte Xapian

Wir verwenden http://hyperestraier.sourceforge.net/ , die vererbt wurde. Haben Sie nicht in andere Motoren gesucht, aber hyperestraier bietet alle Haken notwendig. Einstellen des Suchindex nach oben ist jedoch kompliziert. Wahrscheinlich einfache Optionen zur Verfügung.

Es hängt davon ab, welche Datenbank Sie verwenden. Ich würde mit Solr empfehlen, da es viele nette Optionen für die Fuzzy-Suche bietet und hat eine große Abfrageparser. Der Nachteil ist, dass Sie einen separaten Prozess für sie auszuführen haben. Ich habe auch verwendet Frettchen, aber es fand weniger stabil zu sein in Bezug auf Multi-Threaded-Zugriff auf den Index. Ich habe nicht versucht, Sphinx, weil es nur mit MySQL und Postgres funktioniert.

Ich verwende eine andere Option, die erstaunlich gut ausgearbeitet. Ich verwende jruby und sprechen direkt mit Lucene.

Ich habe acts_as_solr in der Vergangenheit verwendet und lief in einige Probleme. vor allem ist es ein synchroner Aufruf für jeden AR speichern. Das ist nicht allzu schlecht, aber in meiner Situation eine speichern manchmal viele synchrone Anrufe solr und würden gelegentlich länger dauern als Mischlings verursacht erlauben würde, und ich würde eine Mischlings Timeout Ausnahme (oder so ähnlich)

erhalten

Denken Sphinx ist eine bessere Alternative als Ultrasphinx, die aufgegeben zu sein scheinen, aber im Allgemeinen Xapian hat einen stärkeren Motor als Sphinx und ist einfacher für Echtzeit-Suche implementiert.

Ich empfehle acts_as_ferret. Aber obwohl der schwierige Teil ist es, aufzustehen und erfolgreich in Ihrem Server ausgeführt wird, sobald Sie getan haben kaum Probleme wie Frettchen-Server als separaten Hintergrundprozess läuft Ihren Index gibt jedes Mal zu aktualisieren, ist jedes neues Update. Auch seine Arbeiten groß in Mischlings mit Apache für uns.

Ich habe auch für die perfekte Lösung gesucht. Zuerst ging ich mit Denken Sphinx, die gut funktioniert. Aber da ich meine Absicht Webapp auf Heroku zu hosten, ist die einzige Option zu verwenden, Solr . Der größte Nachteil ist jedoch, dass die Entwicklung des Haupt acts_as_solr gem gestoppt, nachdem Mai 2008 zu haben scheint. Also das ist, zu alt für meinen Geschmack. Ich habe gerade Sunspot als fortschrittliche Alternative und mit den letzten Updates, so dass man ist, ich werde berücksichtigen.

Eine weitere Option bietet Heroku ist für einen gehosteten Indexserver auf Solr basiert gehen, mit dem Namen Websolr . Die erforderlichen gem websolr-acts_as_solr ist auch zum Glück sehr viel up-to-date.

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