MySQL Volltextsuche optimieren

Sunbringer

Angesehenes Mitglied
Hi,

ich habe gerade ein kleines Problem mit der Volltextsuche in MySQL.

Es handelt sich dabei im wesentlichen um eine Adress-Datenbank (von der Sturktur her), hat aber mehr als 3 Mio Einträge. Die Ladezeiten betragen dabei nun aber 3-10sek. ...

Hat jemand Ideen, wie man das ganze auf Ladezeiten optimieren kann?

Danke vorab
Jan
 
Jan,

Tabelle in kleine Tabellen unterteilen, z.B. nach Anfangsbuchstaben sortieren. Oder einen Lookup-Index erstellen, lohnt aber nur, wenn da öfters Worte gleich sind.

 
Hi Jan

Ich hab auch schon mit der Fulltext Option von MySQL herumgespielt. Dies bringt dir nur wirklich was, wenn du ganze Webseiten indexieren willst und auch nur dann, wenn du nicht zuviele hast. Ich hatte eine Bild Datenbank von ca. 50000 Bildern, die manuell gekeywordet waren und war schon da am Anschlag. Was dir noch etwas bringt, ist cashing einzuschalten. Weiter runter kriegst du die query Zeiten nicht mit der Fulltext Search Option.

/etc/my.cnf
[mysqld]
ft_min_word_len=2
set-variable = key_buffer_size=30M
set-variable = query_cache_size=30M
set-variable = query_cache_limit=30M
set-variable = bdb_cache_size=30M
set-variable = bdb_max_lock=30000

Das Problem ist, dass du damit cashing für alle Tabellen einschaltest, nicht nur für deine Adress Tabelle und das ist nicht unbedingt was du willst, jedoch wird es ganz klar schneller.

Es gibt eigentlich nur RAM, wie du Suchresultate verschnellern kannst mit Fulltext Search.

Nimm den Rat von Bull zu herzen und versuch selber, über eine selbst definierte Search Struktur die Queries zu optimieren. Ich hab mich dumm und blöd gesucht nach einer besseren Alternative aber keine gefunden.

mngosearch hat das auch mit einem klugen Index gemacht und nicht mit der Fulltext Search Option, die meiner Meinung nach in MySQL nonsense ist.

Es gibt verschiedene Algorythmen Bücher, die dir sonst auch noch weiterhelfen können, die du über Orell Fuessli erhälst.

Gruss
Chris
 
Zurück
Oben