Installera Sphinx
Kör bara följande tre kommandon på din server eller dev-maskin för att installera Sphinx:
./configure gör sudo make install
Det kommer att ställa in Sphinx med standard för användning med MySQL. Om du vill använda det med PostgreSQL, kör sedan konfigurera
med följande flagga:
./configure --with-pgsql
Obs: du kan ladda ner sfinxen från //sphinxsearch.com/downloads//
Installera Thinking Sphinx
Även om det finns ett par Sphinx i Rails applikation, jag valde att gå med Thinking Sphinx, eftersom det verkar vara den mest populära och funktionen komplett. Så du kan installera det som ett Rails-plugin med hjälp av skript/plugininstallation
kommando:
skript/plugininstallation git://github.com/freelancing-god/thinking-sphinx.git
Skriv kod för att använda sfinxsökning:
Vi behöver nu indexera våra modeller. Detta består av att lägga till några små rader kod i varje modell som du vill kunna söka. Så låt oss säga att vi har en Blog-app (inte alla!), som har en Post-modell. Och den där Postmodellen innehåller det vanliga titel
och beskrivning
fält. Vi lägger därför till följande kodbit under våra associationsförklaringar i
app/models/post.rb
:
define_index gör indexer titel, beskrivning slut
Dessa mycket korta tre rader kommer att berätta för Thinking Sphinx att indexera titel
och beskrivning
fält av Posta
modell och låter oss söka igenom alla våra inlägg. Nu behöver vi bara indexera och starta Sphinx. Och Thinking Sphinx gör detta väldigt enkelt med sina praktiska Rake-uppgifter.
Kör bara detta:
rake ts:rebuild
Det kommer att stoppa (om det startas), indexera och starta Sphinx åt dig. Nu måste vi skapa ett snabbt sökformulär. Detta kommer så småningom att bli en global webbplatssökning, och inte bara en Post-sökning. Så vi kommer att skapa en ny kontroller:
skript/generera kontrollersökning
Skapa sedan en vy på app/views/search/index.html.erb
och placera formuläret i det:
Skapa nu en ny i din nya sökkontroll skapa
handling:
def create @posts = Post.search params[:search] slut
Skapa din skapa
se kl app/views/search/create.html.erb
med lite kod för att visa din @inlägg
på vanligt sätt.
Notera:
Vi kan till och med paginera våra resultat med WillPaginate-plugin:
def skapa
@posts = Post.search params[:search], :page => params[:page], :per_page => 10 end