Hallo Andreas,
Im Grunde könnte man jetzt auch noch Wortteile in der Mitte indizieren, aber meine Frage ist: macht man das so? sieht ja erstmal viel aus, aber mit der Zeit ist wohl das meiste indiziert, sodaß nur noch neue Postingnummern dazu gepackt werden müßten.
Hierzu nur die Anmerkung, dass ich nicht glaube, dass mit der Zeit das meiste indiziert ist, oder der Index ist unüberschaubar groß ...
Ich konzentriere mich auf Punkt 2
Wie die Tabellen und Abfrage anlegen? Motivation: die Suche soll natürlich schnell sein. Macht es einen Unterschied ob ich:
a)
nur eine Tabelle (INDEX) anlege:IDs | suchwort
12; 135; 452 | Sapperlot
13; 24; 32; 98 | Gewitter
...
Hier ist die Spalte 'Suchwort' indiziert, Spalte IDs enthält auf einen Schlag alle gefunden Postings
Das ist ein eklatanter Verstoß gegen die Normalformen der Datenbanken. Erstes Gesetz: Daten liegen atomar vor.
An a) solltest Du gar nicht denken.
b)
zwei Tabellen (INDEX und VERKNUEPFUNG) anlege:id | suchwort id_suchwort | id_posting
-------------- ------------------------
1 | Sapperlot 1 | 12
-------------- ------------------------
2 | Gewitter 1 | 135
-------------- ------------------------
... 1 | 452
------------------------
2 | 13
------------------------
2 | 24
------------------------
2 | 32
------------------------
2 | 98Hier sind alle Spalten indiziert.
Mach es so :-)
c)
...
und dann mit LIKE 'apperlo%' suche? Also sind '=' und LIKE 'wort%' gleich schnell (mal angenommen, sie würden gleich viele Ergebnisse bringen)?
Befrage dazu explain http://dev.mysql.com/doc/mysql/de/EXPLAIN.html
Freundliche Grüsse,
Vinzenz