phpbar.de logo

Mailinglisten-Archive

[php] Datenbank mit mehreren Stichwörtern durchsuchen

[php] Datenbank mit mehreren Stichwörtern durchsuchen

Daniel Lüdeking d.luedeking at yahoo.de
Don Mar 22 17:01:46 CET 2007


Hallo,

da es sich um ein kleines internes Projekt handelt, kann ich mich mit 
DER langsamen Lösung erst einmal
zufrieden geben :).

Irgendwie hatte ich zu kompliziert gedacht.
Danke für den Anstoß :)

BTW:
Ich hatte sowas vor:

select * from artikel where text like '%einfach%klein%test%';

Nun, danke für die Antworten :)

Gruß,
Daniel Lüdeking

Yannik Hampe schrieb:
> 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