Hi Torsten,

Am 22.03.2009 um 09:55 schrieb Torsten Flammiger:

Guten morgen zusammen,

ich nutze Ultrasphinx, weil es mir einfach ermöglicht, alle gewünschten
Models incl. der gewünschten Attribute zu indizieren und daraus eine
Volltextsuche über den *ganzen* Webauftritt zu ermöglichen - bzw. ich
_möchte_ es nutzen ;)

Nun zur Frage:
Indizieren, Suchen und Finden klappt ganz hervorragend aber wie stelle
ich die Ergebnisse dar? Die Suche nach einem Begriff liefert mir

* die Objekte in denen der Suchbegriff vorkommt.
* ALLE Eigenschaften der relevanten Objekte (obwohl ich dediziert
 angegeben habe, welche Datenbankspalten ich indiziert haben möchte:
 is_indexed :fields => ['name', 'nick', 'description', 'info']
 im Member-Model. Gefunden wird aber auch das Passwort! - was
 insofern logisch ist, als das das Passwort eine Eigenschaft des
 Models ist.

hmm, wenn ich den Satz aus der Doku:

"Ultrasphinx uses the find_all_by_id method to instantiate records."

richtig interpretiere, dann funktioniert das Suchen in zwei Schritten: abgelegt werden im Index nur id und typ, die eigentlichen Objekt werden dann per find_all_by_id instanziiert - das ist dann ein ganz normaler ActiveRecord-Call und daher auch schon wieder unabhängig von us - daher kann man auch erwarten, dass man ein ganz normales ActiveRecord-Objekt in der Hand hat (hier kommt auch wieder das paginieren ins Spiel: das verhindert, dass man plötzlich die ganze Datenbank per find_by_id in der Hand hat...).

Wie dem auch sei: Was soll ich nun mit den Objekten anfangen?
Natürlich könnte ich stupide in jede Eigenschaft eines Objektes
hineinschauen, prüfen, ob der Suchtext darin vorkommt und dann
entsprechendes HTML generieren - aber das kanns doch nicht sein?

Wie man die Suchergebnisse dann anzeigt, dass ist dann Sache der Anwendung: Meist hat man da ja verschiedene Objekte in der Ergebnismenge und für jedes Objekt muss man zwei Sachen Überlegen:

1) wie soll es sich auf der Suchergebnisseite darstellen: hier machen wir z.B. auf jedes suchbare Objekte eine methode summary, die dann jeweils einen Text zurückgibt, den man auf so einer Seite anzeigen kann. 2) Wohin soll das Suchergebnis verlinken: Wenn Du z.B. Blogposts und Benutzer suchen lässt, dann würdest Du auf die Anzeigeseite für Blogposts oder auf eine Übersichtsseite des Benutzers verlinken. Das ist, wie gesagt, sehr anwendungsspezifisch.



Jewede Dokumentation darüber, wie die Ergebnisse in den Browser wandern
soll, scheint schlicht und ergreifend nicht zu existieren.
Hat jemand Erfahrung damit?

Einen Controller, der das Suchfeld entgegennimmt und die Darstellung des Suchergebnis und das paginieren macht, hast Du schon?! Dann kann man im vier über die results einfach iterieren, z.B.:
        
@search = Entry.search(@query, params[:page])
@results = @search.results
@total_entries = @search.total_entries


Hilft das schon irgendwie weiter?!

Grüße
Stefan

_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/listinfo/rubyonrails-ug

Antwort per Email an