Thinking Sphinx ist eine Bibliothek zur Verbindung von ActiveRecord mit dem Sphinx-Volltextsuchtool und lässt sich eng in Rails integrieren (funktioniert aber auch mit anderen Ruby-Web-Frameworks). Die aktuelle Version ist v5.6.0.
Alle Änderungen, die Sie beim Upgrade vornehmen müssen, finden Sie im Änderungsprotokoll und in den Versionshinweisen. Insbesondere die Versionshinweise sind recht gut darin, aktuelle Änderungen und weitere Details zu neuen Funktionen zu behandeln.
Die Dokumentation enthält außerdem weitere Details dazu, was für ein Upgrade von v4 auf v5, v3 auf v4 und v1/v2 auf v3 erforderlich ist.
Es ist ein Juwel, also installieren Sie es wie jedes andere Juwel. Sie müssen auch das mysql2-Gem angeben, wenn Sie MRI verwenden, oder jdbc-mysql, wenn Sie JRuby verwenden:
gem 'mysql2', '~> 0.4', :platform => :ruby
gem 'jdbc-mysql', '~> 5.1.35', :platform => :jruby
gem 'thinking-sphinx', '~> 5.5'
Die genannten MySQL-Gems sind für die Verbindung mit Sphinx erforderlich. Bitte schließen Sie sie daher auch ein, wenn Sie PostgreSQL für Ihre Datenbank verwenden.
Sie müssen auch Sphinx installieren – dies wird in der erweiterten Dokumentation behandelt.
Beginnen Sie mit der Lektüre der Kurzanleitung. Darüber hinaus dürfte Ihnen die Dokumentation von großem Nutzen sein.
Die aktuelle Version von Thinking Sphinx funktioniert mit den folgenden Versionen seiner Abhängigkeiten:
Bibliothek | Minimum | Getestet gegen |
---|---|---|
Rubin | v2.4 | v2.4, v2.5, v2.6, v2.7, v3.0, v3.1, v3.2 |
Sphinx | v2.2.11 | v2.2.11, v3.4.1 |
Mantikor | v2.8 | v4.0, v6.0 |
ActiveRecord | v4.2 | v4.2..v7.0 |
Es funktioniert möglicherweise mit älteren Ruby-Versionen, es wird jedoch dringend empfohlen, auf eine unterstützte Version zu aktualisieren.
Es sollte auch mit JRuby funktionieren, aber die Testumgebung dafür in CI war unzuverlässig, daher wird derzeit nicht aktiv dagegen getestet.
Wenn Sie Sphinx verwenden, wird Version 2.2.11 empfohlen, auch wenn sie ziemlich alt ist, da sie gut mit PostgreSQL-Datenbanken funktioniert (wenn Sie jedoch MySQL – oder Echtzeitindizes – verwenden, sollte Version 3.3.1 auch in Ordnung sein).
Wenn Sie sich stattdessen für Manticore entscheiden, funktioniert Version 2.8 oder neuer, aber Version 4 oder neuer wird empfohlen, da diese aktiv getestet wird. Die Versionen v4.2 und 5.0 hatten Fehler bei der Facettensuche, aber das wurde in Manticore v6.0 behoben.
Derzeit unterstützt Thinking Sphinx Rails/ActiveRecord 4.2 oder neuer. Wenn Sie Sinatra und ActiveRecord anstelle von Rails verwenden, ist das in Ordnung – stellen Sie nur sicher, dass Sie die Option :require => 'thinking_sphinx/sinatra'
hinzufügen, wenn Sie thinking-sphinx
in Ihrer Gemfile auflisten.
Wenn Sie ActiveRecord 3.2-4.1-Unterstützung wünschen, lesen Sie die 4.x-Versionen von Thinking Sphinx. Informationen zur Unterstützung von ActiveRecord 3.1 finden Sie in den 3.0.x-Versionen. Alles, was älter ist, bleibt bei Thinking Sphinx v2.x (für Rails/ActiveRecord 3.0) oder v1.x (Rails 2.3) hängen. Bitte beachten Sie, dass diese älteren Versionen nicht mehr aktiv unterstützt werden.
Sie benötigen entweder das Standard-Ruby (v2.4 oder neuer) oder JRuby (9.1 oder neuer).
MySQL 5.x und Postgres 8.4 oder höher werden unterstützt.
Bitte beachten Sie, dass für dieses Projekt ein Verhaltenskodex für Mitwirkende gilt. Durch die Teilnahme an diesem Projekt erklären Sie sich mit den Bedingungen einverstanden.
Um einen Beitrag zu leisten, klonen Sie dieses Repository und sehen Sie sich die Spezifikationen genau an – Sie werden den Unterschied zwischen Akzeptanztests, die tatsächlich Sphinx verwenden und den gesamten Stack durchlaufen, und Unit-Tests (alles andere) bemerken, die großzügige Testdoppel verwenden, um dies sicherzustellen Wir testen nur das Verhalten der betreffenden Klasse. Ich habe festgestellt, dass dies zu einem weitaus besseren Codedesign führt.
Die gesamte Entwicklung erfolgt im develop
. Bitte basieren Sie alle Pull-Anfragen auf diesem Zweig. Bitte schreiben Sie die Tests und dann den Code, damit sie erfolgreich sind, und senden Sie ihn per Pull-Anfrage.
Um die Tests auszuführen, müssen Sie eine Datenbank mit dem Namen thinking_sphinx
erstellen:
# Either fire up a MySQL console:
mysql -u root
# OR a PostgreSQL console:
psql
# In that console, create the database:
CREATE DATABASE thinking_sphinx;
Anschließend können Sie die Unit-Tests mit rake spec:unit
, die Abnahmetests mit rake spec:acceptance
oder alle Tests nur mit rake
ausführen. Um diese mit PostgreSQL auszuführen, müssen Sie die Umgebungsvariable DATABASE
entsprechend festlegen:
DATABASE=postgresql rake
Copyright © 2007-2024, Thinking Sphinx wird von Pat Allan entwickelt und gepflegt und wird unter der offenen MIT- Lizenz veröffentlicht. Vielen Dank an alle, die Patches beigesteuert haben.