Mailinglisten-Archive |
(sorry, gestern hatte ich mit einem falschen Absender geschrieben - hoffentlich kommt die E-Mail nicht doppelt) Hallo Mitleser, ich arbeite an einem MySQL / PHP-Projekt, in welchem ich nach bestimmten Artikeln im Titel und in der Beschreibung (bis zu 1000 Zeichen) suchen lasse. Gelegentlich gibt es eine sehr große Ergebnismenge, so daß ich diese auf 5 Artikel pro Seite reduziere (LIMIT 0,5 ... LIMIT x,5). Nun möchte ich natürlich auch die Anzahl der Treffer anzeigen. Bisher habe ich das wie folgt gelöst: SELECT count(artikel.art_id) FROM ... WHERE ... ; bestimmt mir die Anzahl der Treffer. Ist die Anzahl der Treffer > 0, dann gibt es eine zweite Abfrage, welche mir meine gewünschten Attribute liefert: SELECT ... LIMIT 0,5; (für die erste Seite). Nun meine Frage: Kann man das evtl. auf eine Anfrage reduzieren? Der Grund: Die Volltext-Suche im Inhalt dauert bei bestimmten Wörtern schon gelegentlich recht lange (1000 Treffer kommen schon mal vor). Evtl. kann ich ja die Antwortzeiten reduzieren ... die Beschränkung auf eine SQL-Abfrage wäre immerhin schon einmal etwas. Mit der Stopwortliste werde ich mich auch noch beschäftigen. Hat da jemand eine, die auf den deutschen Sprachraum zugeschnitten ist? Weiterhin handelt es sich bei der Volltextsuche um einen einfachen JOIN, der auch mal über 5 Tabellen geht. SELECT DISTINCT inhalt.art_id titel_deutsch2.titel2 preis.preis_vk preis.preis_evk1 preis.preis_evk2 FROM artikel, inhalt, titel_deutsch2, preis WHERE MATCH inhalt.inhalt AGAINST ('$qtext') AND titel_deutsch2.art_id = inhalt.art_id AND artikel.art_id = inhalt.art_id AND preis.art_id = inhalt.art_id ... ORDER BY MATCH inhalt.inhalt AGAINST ('$qtext') DESC <gekürzt> Macht es Sinn erst einmal die Volltextsuche zu starten SELECT DISTINCT inhalt.art_id FROM inhalt WHERE MATCH inhalt.inhalt AGAINST ('$qtext') und anschließend mit deren Ergebnismenge weiter zu arbeiten und diese weiter zu reduzieren? Als Ergebnismenge werden ausschließlich INT geliefert. Man könnte die ja in HEAP-tables zwischenspeichern ... nur macht das bei 1000 Treffern überhaupt noch Sinn (Speicher!)? Bye, Heiko --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive