Du kannst dir selber Index-Tabellen definieren, phpBB macht es glaube ich auch so, evtl. kannst du dir ja mal den Quelltext und die DB-Struktur ansehen.
Das kann z.B. so aussehen, wenn du über die Spalte TEXT in folgender Tabelle TEXT suchen willst:
create table TEXT(
TEXT_ID int not null primary key,
TEXT text not null
);
create table WORT(
WORT_ID int not null primary key,
WORT varchar(32)
);
create clustered unique index WORT_IX1 on WORT(WORT);
create table REL_WORT_TEXT(
WORT_ID int not null,
TEXT_ID int not null
primary key (WORT_ID, TEXT_ID)
);
Wenn die Syntax nicht ganz korrekt ist, seht mir das bitte nach und korrigiert mich - ich arbeite normalerweise auf nem anderen DBS.
Wenn du die Tabellen WORT und REL_WORT_TEXT aktuell hälst (in WORT stehen alle Worte, die in der TEXT-Spalte vorkommen und in der REL-Tabelle speicherst du, welches Wort in welcher Zeile der Text-Tabelle vorkommt), kannst du schnell über den Index auf WORT die WORT_ID ermitteln und über die REL_WORT_TEXT die entsprechenden Texte ermitteln. Wichtig ist eben, daß du geeignete Indizes anlegst, grade bei WORT und REL_WORT_TEXT als Lookup-Tabellen solltest du clustered indizies verwenden.
Außerdem würde ich in WORT keine Groß-/Kleinschreibung berücksichtigen, sondern z.B. nur Kleinschreibung verwenden.
Beispiel-Query:
Code: Select all
select t.TEXT
from TEXT t,
WORT w,
REL_WORT_TEXT r
where w.WORT = lower('Beispiel')
and w.WORT_ID = r.WORT_ID
and r.TEXT_ID = t.TEXT_ID
hth,
Paranoid