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:
We now need to index our models. This consists of adding a few small lines of code into each model that you want to be able to search. So lets say we have a Blog app (doesn’t everyone!), which has a Post model. And that Post model contains the usual 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
model, and allow us to search through all our posts. Now we just need to index and start Sphinx. And Thinking Sphinx makes this very easy with it’s handy Rake tasks.
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