Keyword-Suche mit PHP MySql?

Habe ich Titel (varchar), Beschreibung (text), Schlagworte (varchar-Felder) in meine mysql-Tabelle.

Ich hielt keywords Feld, als ich dachte, ich wäre auf der Suche in diesem Feld nur. Aber jetzt kann ich verlangen, um die Suche unter allen drei Feldern. also für die keywords "wort1 wort2 wort3", meine Abfrage wird

SELECT * FROM myTable
WHERE (
name LIKE '%word1%' OR description LIKE '%word1%' OR keywords LIKE '%word1%' 
OR name LIKE '%word2%' OR description LIKE '%word2%' OR keywords LIKE '%word2%' 
OR name LIKE '%word3%' OR description LIKE '%word3%' OR keywords LIKE '%word3%') 
AND status = 'live'

Sieht ein bisschen chaotisch, aber es funktioniert. Aber jetzt muss ich implementieren, die synonym-Suche. also für ein gegebenes Wort vorausgesetzt, es gibt ein paar Synonyme dieses query wird mehr chaotisch, wie ich eine Schleife durch alle Wörter. Die Anforderungen werden immer klarer, ich muss mich dieser myTable zu einigen anderen Tabellen als gut.

So

  • Denken Sie, in der oben beschriebenen Weise ist chaotisch und wird zu Problemen führen, da die Daten wachsen?
  • Wie kann ich vermeiden, dass die oben Durcheinander? Gibt es eine saubere Lösung, die ich gehen kann? Jedes Beispiel, das mir helfen wird.
  • Gibt es eine andere Methode/Technik, die du empfehlen kannst zu mir?

Dank

BEARBEITEN

@Peter Stuifzand mir vorgeschlagen, dass ich erstellen Sie eine Tabelle search_index und speichern Sie alle 3 Felder (Titel,Schlagwort,desc) Infos und vollständige Textsuche. Ich verstehe, dass zusätzlich dieser Tabelle wird der Verweis auf myTable primären Schlüssel als gut.

Aber meine erweiterten Suche umfassen können beitreten Personen, die mit Kategorie-Tabelle, geographic_location Tabelle (für die Suche innerhalb von 10, 20 km etc.), Filterung von someother Kriterien und natürlich die Sortierung der Suchergebnisse. Meinst du mit mysql-fulltext-wird nicht verlangsamen?

InformationsquelleAutor TigerTiger | 2009-06-11

Schreibe einen Kommentar