phpbar.de logo

Mailinglisten-Archive

[php] AW: [php] MySQL zum suchen benutzen?

[php] AW: [php] MySQL zum suchen benutzen?

Gloss Mathias Mathias.Gloss_(at)_start.de
Fri, 21 Jan 2000 16:42:42 +0100


Aloha,

> ----------
> Von: 	Jens Kohl[SMTP:j.kohl_(at)_style-id.de]
> 
> Hallo,
> wir sind momentan damit beschäftigt eine sehr große Witz-Datenbank
> aufzubauen, Besucher wollen aber sicher nach Fragmenten von Witzen suchen
> an
> die sie sich noch erinnern können. Ist es möglich mit MySQL eine
> Suchfunktion zu integrieren die, die Standardmäßigen Suchbegriffe kann wie
> große Suchmaschinen, also alle boolischen und dann noch so Sachen wie
> +"Begriff1" +"Begiff2"?
> 
Ich hatte das mal bei Adressen versucht mit MySQL.

250.000 Adressen. Such nur in dem Namensfeld ( CHAR(60) ) nach
z.B. name LIKE '%Meier%'. 

Dauer bei nur einer Abfrage gleichzeitig: 69 sec.

Die DB in eine Textdatei gedumpt (ca. 40 MB) und mit glimpse
volltextindiziert:

Abfrage nach Meier : ca. 0,5 sec um  alle Zeilen anzuzeigen, die
'Meier' enthalten.


Meiner bescheidenen Meinung nach sind Datenbanken einfach nicht
dazu geschaffen, Teile von Zeichenketten zu suchen. Zumindest nicht
die Datenbanken, die CHAR-Felder nur "normal" indizieren.

Ein Index auf das Feld "name" führte auch nur dann weiter, wenn ich
z.B. nach 'Mei%' suchte. Sobald das erste zu suchende Zeichen eine
Wildcard war, wurde der Index nicht mehr verwendet.


Ich würde mir STARK überlegen, ob ich die Witze nicht nach ihrer
Art in eine Baumstruktur im Dateisystem ablege (1 Zeile in einer Datei
pro Witz) und dann den Baum mit glimpse volltextindiziere. Dann kannst
du schnell nach Witzen suchen, und bekommst immer die passende Zeile
(== Witz) geliefert.

Grüße, Mathias




php::bar PHP Wiki   -   Listenarchive