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