phpbar.de logo

Mailinglisten-Archive

[php] Datenbank mit mehreren Stichwörtern durchsuchen

[php] Datenbank mit mehreren Stichwörtern durchsuchen

Yannik Hampe yannik at cipher-code.de
Don Mar 22 16:48:01 CET 2007



Norbert Pfeiffer wrote:
> Hi Daniel,
> 
>> Hat jemand eine Lösung dafür?
> ja,
> z.B. ein einfaches MySQL-Select-Query
> 
> SELECT ArtikelID, Bezeichnung, Beschreibung, Preis
> FROM meineArtikel
> WHERE '%Beschreibung%' IN ('einfach','klein','test');

Wenn das funktioniert wunder ich mich aber...
Ich schätze mal, du meintest eher:
SELECT ArtikelID, Bezeichnung, Beschreibung, Preis FROM meineArtikel
WHERE beschreibung LIKE 'einfach'
OR beschreibung LIKE 'klein'
OR beschreibung LIKE 'test'

Aber das ist so ziemlich DIE langsamste Abfrage, die du MySQL überhaupt
erbringen lassen kannst. Deutlich schneller wäre:

SELECT MATCH(spalte) AGAINST (text) AS relevanz FROM ...

Also auf dein Beispiel:
SELECT ArtikelID, Bezeichnung, Beschreibung, Preis,MATCH(Beschreibung)
AGAINST ('einfach klein test') AS relevanz FROM meineArtikel WHERE
relevanz > 0.01 ORDER BY relevanz DESC

Das setzt natürlich vorraus, dass du einen Fulltext-Index auf die Spalte
gesetzt hast.
Der Thread "Doppelte ähnliche Texte abfangen?" in der Mailingliste
könnte dich interessieren...

Yannik

> m. b. G.   Norbert


php::bar PHP Wiki   -   Listenarchive