Installieren Sie Sphinx
Führen Sie einfach die folgenden drei Befehle auf Ihrem Server oder Entwicklungscomputer aus, um Sphinx zu installieren:
./configure make sudo make install
Dadurch wird Sphinx standardmäßig für die Verwendung mit MySQL eingerichtet. Wenn Sie es mit PostgreSQL verwenden möchten, führen Sie es aus konfigurieren
mit folgender Flagge:
./configure --with-pgsql
Hinweis: Sie können die Sphinx hier herunterladen //sphinxsearch.com/downloads//
Installieren Sie Thinking Sphinx
Auch wenn es ein paar Sphinxe gibt In Rails-Anwendung habe ich mich für Thinking Sphinx entschieden, da es das beliebteste und umfassendste Feature zu sein scheint. Sie können es also als Rails-Plugin installieren Skript-/Plugin-Installation
Befehl:
Skript-/Plugin-Installation git://github.com/freelancing-god/thinking-sphinx.git
Code schreiben, um die Sphinx-Suche zu verwenden:
Jetzt müssen wir unsere Modelle indizieren. Dies besteht darin, in jedes Modell, das Sie durchsuchen möchten, ein paar kleine Codezeilen einzufügen. Nehmen wir also an, wir haben eine Blog-App (nicht jeder!), die über ein Post-Modell verfügt. Und dieses Post-Modell enthält das Übliche Titel
Und Beschreibung
Felder. Wir fügen daher den folgenden Code unterhalb unserer Assoziationserklärungen ein
app/models/post.rb
:
define_index indiziert Titel und Beschreibungsende
Diese sehr kurzen drei Zeilen weisen Thinking Sphinx an, das zu indizieren Titel
Und Beschreibung
Felder der Post
Modell, und ermöglichen Sie uns, alle unsere Beiträge zu durchsuchen. Jetzt müssen wir nur noch Sphinx indizieren und starten. Und Thinking Sphinx macht dies mit seinen praktischen Rake-Aufgaben ganz einfach.
Führen Sie einfach Folgendes aus:
Rechen ts:rebuild
Dadurch wird Sphinx für Sie gestoppt (sofern es gestartet), indiziert und gestartet. Jetzt müssen wir ein Schnellsuchformular erstellen. Dies wird letztendlich eine globale Site-Suche sein und nicht nur eine Post-Suche. Also erstellen wir einen neuen Controller:
Skript/Controller-Suche generieren
Dann erstellen Sie eine Ansicht unter app/views/search/index.html.erb
und platzieren Sie das Formular darin:
Erstellen Sie nun in Ihrem neuen Suchcontroller einen neuen erstellen
Aktion:
Def create @posts = Post.search params[:search] end
Erstelle dein erstellen
ansehen unter app/views/search/create.html.erb
mit ein bisschen Code, um Ihre anzuzeigen @posts
in gewohnter Weise.
Notiz:
Mit dem WillPaginate-Plugin können wir unsere Ergebnisse sogar paginieren:
auf jeden Fall erstellen
@posts = Post.search params[:search], :page => params[:page], :per_page => 10 end