phpbar.de logo

Mailinglisten-Archive

Re: erstellen eines Index
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: erstellen eines Index



Mahlzeit,

> >gruebele schon einige Zeit darueber, wie bzw. ob man ein Textfeld
> >indizieren kann/sollte um die Abfrage zu beschleunigen.

Hier klinke ich mich jetzt mal ein:

Versuche mal folgendes:

Beim Import des Datensatzes zerlege den beliebig (!) großen Text in alle 
seine Worte und lege die einzeln in eine Tabelle ab:

table desc {
	id	INT UNSIGNED NOT NULL;
	beschr	VARCHAR(30);

	PRIMARY KEY(id)
	KEY(beschr);
}

In einer weiteren Tabelle steht nun, welches Wort zu welchem Artikel 
gehört:

table desc_1n {
	artnr	INT UNSIGNED NOT NULL;
	id	INT UNSIGNED NOT NULL;

	PRIMARY KEY(artnr);
	KEY(id);
}


Sucht man nun nach einem Wort, dann kannst Du wie folgt vorgehen:

SELECT id FROM desc WHERE beschr LIKE ("$beschr%");

Nun bekommt man die ID/s der/des Treffers. Ein Blick in die Tabelle 
"desc_1n" 

SELECT artnr FROM desc_1n WHERE id=$id

sollte nun den Datensatz finden, der das gesuchte Wort / Teilwort 
enthält. Es sind demnach mindestens zwei Datenbankabfragen notwendig, was 
aber trotzdem für schnelle Abfragen reicht.

So kann man auch große Texte sehr schnell und nach Teilwörtern 
durchsuchen. Ein Update auf die neueste MySQL-Version ist nicht unbedingt 
notwendig (wenn auch empfehlenswert).

Bye,
	Heiko

---
*** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql 


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive