Mailinglisten-Archive |
Hallo zusammen,
Ich muss zu meiner Schande gesetehen das ich mich in der Vergangenheit
noch nie mit der Volltextsuchfunktionalität der mysql beschäftigt habe,
auch sonst mit der Materie nicht, bis jetzt hatten simple Abfragen
gereicht ohne große Suchwunder :-)
Also kommen wir zum Punkt:
Ich hab 2 Tabellen (ich nehm mal einfache beispiele)
manufacturer
---------------
ID mediumint
title varchar(128)
product
---------------
ID mediumint
title varchar(128)
manufacturer_id mediumint
Der title von beiden records der Tabellen besteht in der Regel aus
mehreren Worten z.b. "Kleines grünes Rohr" von "Rohr Hersteller des Jahres"
Nun will ich das man einen Suchbegriff eingeben kann. Diese Suche soll
im Title des Manufacturers und im Title des Product suchen und die
Treffer zurückliefern.
*(Eigentlich ist mit den Suchbegriffen auch noch eine Tag cloud
wünschenswert da hab ich auch noch keine Ahnung wie ich die anfange)
*Ich hab manufacturer mit 50.000 und product mit 100.000 zufälligen
einträgen gefüttert, das ist auch so ungefähr das maximum an Datensätzen
das ich erwarte.
Einen Fulltext index hab ich jeweils auf die title felder der beiden
Tabellen gelegt.
Wenn ich nun mit queries wie folgendem rangehe (Abfrage dauert immer so
2 - 2,2 sec solange sie nicht aus dem cache kommt)
select product.id,product.title,manufacturer.id,manufacturer.title from
product, manufacturer where
match (product.title,manufacturer.title) against('wolle grün hamster
sofa' in boolean mode)
and product.manufacturer_id = manufacturer.id
dann klappt das an sich auch schonmal nicht schlecht..... aber irgendwie
bin ich nicht glücklich damit.
eine like suche kann ich logischerweise nicht machen, wenn ich dann z.b.
nach grün suche krieg ich auch grüner gründings usw, das verwässert das
Ergebnis zu sehr.
Was meint ihr dazu? gehts irgendwie schneller als 2 sec? Hab ich
irgendwo einen Denkfehler? Btw die Natural suche wäre mir glaub ich
sogar lieber
aber diese funktioniert nur auf eine Tabelle.
Mich würde wirklich interessieren wie das andere gelöst haben ganz
besonders auch noch in Verbindung mit einer Tag Cloud.
Eigentlich ist das ein wenig Offtopic, wobei der Project in PHP (Zend
Framework) geschrieben wird, bitte seht es mir nach :-)
Gruß
Andi
php::bar PHP Wiki - Listenarchive