Diskussion: Verwaltung von Suchwörtern (PHP & MySQL)
Jurik
- datenbank
Hallo Leute,
ich bin da auf eine Frage gestoßen und würde sie gerne hier diskutieren.
Nehmen wir uns mal so ein Portal wie YouTube. Dort gibt es Tags (Stichwörter oder Suchwörter genannt) und die Beschreibung des hochgeladenen Mediums.
Wie speichert man am besten diese Suchwörter und Beschreibung für eine performante Suche? Es sollte noch erwähnt werden, dass so gut wie jede Sprache zum Einsatz kommen kann.
Gegeben sind: MySQL 5.x und PHP 5.x
Quellen welche ich mir zuerst reingezogen hab sind:
mySQL Handbuch
Artikel über Volltextsuche
Erst einmal paar Fragen die mich beschäftigen:
Der Artikel über die Volltextsuche ist gut, nur frag ich mich ob es nicht noch besser geht? Besonders, da ich Beschreibung und Tags kombinieren will, eine vernünftige Wertigkeit brauch und die Artikel oder Medien top aktuell in der Suche zu finden sein sollen. (Also nicht mal Nachts eben ein Cronjob laufen lassen.)
Ist die Engine MyISAM die beste für die Suche? (innoDB ist zu groß und brauch zu lange, fällt also schon einmal weg)
Wo legt die Volltextsuche aus dem vorherigen Artikel die Wertigkeit und wie könnte man soetwas mit Stichwörtern (Tags) verbinden?
Meine Idee wäre den Index der mySQL selbst zu benutzen. Eine Tabelle, die jedes Wort (Tags und Beschreibung) in ein einzelnes Tupel speichert und mit dem 'Artikel' oder Media verknüpft.
Dabei würde ich aber Wörter zusammenfassen. So würde in der Tabelle dann die ID des Filmes stehn, das Wort selber und ein Counter wie oft dieses Wort in der Beschreibung auftaucht. Falls ein Wort der Tagliste gleich dem Wort einer Beschreibung ist würde ich +10 auf den Counter setzen.
So könnte die Suche nach den indezierten Wörtern durch die DB erfolgen und nach dem Counter sollte abwärts sortiert werden.
Natürlich müßten Tags, Beschreibung und Sucheingabe vorher überprüft und bereinigt (Stoppwörter) werden.
Habt ihr andere Ideen? Oder versuche ich das Rad nur neu zu erfinden?
Viele Grüße,
Jurik