5 messages in com.mysql.lists.mysql-deRe: Indizes/FULLTEXT| From | Sent On | Attachments |
|---|---|---|
| Michael Borchers | 18 Jan 2007 04:16 | |
| Sebastian Mendel | 18 Jan 2007 04:21 | |
| Michael Borchers | 18 Jan 2007 04:54 | |
| Sebastian Mendel | 18 Jan 2007 05:08 | |
| Xhammer.com - T. Goik | 19 Jan 2007 00:37 |
| Subject: | Re: Indizes/FULLTEXT![]() |
|---|---|
| From: | Sebastian Mendel (lis...@sebastianmendel.de) |
| Date: | 01/18/2007 05:08:01 AM |
| List: | com.mysql.lists.mysql-de |
Michael Borchers schrieb:
Kann mir jmd erklären, wann es sinnig ist, ein Feld als FULLTEXT zu kennzeichen?!
Wenn du MATCH AGAINST verwendest
Z Zt verwender ich Suchen mit WHERE text LIKE '%text%' ... - wozu dient im Gegensatz dazu WHERE MATCH(text) AGAINST ('text') ?!
dieses würde, wie oben schon geschrieben, den FULLTEXT Index verwenden
Danke erstmal! Hier eine erweiterte Frage anhand meines Beispiels: Ich habe eine Kontakt Datenbank deren Felder Name, Beschreibung, Ansprechpartner, Adresse etc. durchsucht werden. Z Zt sind alle Felder einzeln auf FULLTEXT gesetzt und die Query erzeugt pro Feld ein LIKE '%'such'%'.
Wozu FULLTEXT wenn du kein MATCH AGAIN verwendest? LIKE nutzt den FULLTEXT nicht ... (IMHO)
Wäre es in diesem Fall sinniger alle LIKEs in einem MATCH zusammenzufassen?
ja
Wo liegt der Unterschied zwischen LIKE und MATCH genau?
LIKE sucht einfach einen vorgegeben String in dem Feld
MATCH AGAINST sucht die einzelnen Wörter, gewichtet das Ergebnis nach Häufigkeit der Wörter, nutzt den FULLTEXT und ist damit schneller, verwendet keine Wörter mit weniger als 4 Buchstaben, kennt zusätzliche Steuerzeichen +, -, * usw.
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
LIKE '%MySQL HANDBUCH%'
findet nur ' ... MySQL HANDBUCH ...'
MATCH AGAINST 'MySQL HANDBUCH'
findet auch 'HANDBUCH für MySQL'
und hat eine Gewichtung der Ergebnisse
Sollte ich dann zusätzlich zu den einzelnen FULLTEXTs noch einen FULLTEXT über alle Felder machen, oder nur eines von beiden?!
nur eines
ohne alle Felder die du in MATCH AGAINST verwendest auch in EINEM FULLTEXT zu haben funktioniert das eh nicht ... also du MUSST und nicht SOLLTE
PS: Gibt es einen Query Optimizer für MySQL, viell. auf php Basis?!
ja, der is eingebaut in MySQL der läuft immer automatisch mit - in diesem Zusammenhang ist es auch sehr sinnvoll den Query-Cache zu aktivieren.
-- Sebastian Mendel
www.sebastianmendel.de




