PHP, MySQL, CSS, XHTML, JavaScript
15. Nov. 2006
PHP / MySQL
Topp notis: FULLTEXT-metoden som er brukt i denne artikkelen støttes ikke av database-typen InnoDB, men MyISAM.
Det er flere metoder du kan bruke når du skal søke i en MySQL database. De vanligste metodene er å bruke LIKE() eller MATCH(). Her vil jeg forklare en bruk av MATCH, og så vidt nevne LIKE/RLIKE. MATCH bruker vi i noe som kalles FULLTEXT search. Det betyr at du må ha en FULLTEXT-index i tabellen din.
Dette kan du gjøre eks via CREATE eller ALTER. Når du lager en ny tabell kan du f.eks gjøre slik:
FULLTEXT skal asignes til de feltene som du vil MATCH skal fungere på.
Si at jeg har mye innhold i tabellen ovenfor som handler om elefanter og blåbær.
Så skal jeg plukke ut de artiklene som inneholder nettopp ordene "elefant" og "blåbær". Da gjør jeg slik:
Her rekner du ut rel som relevanse over hvor mye det stemmer, og vi sorterer etter mest relevante søk, fra størst til minst. Vi velger ut ID, tittel og relevanse.
Det blir ingen videre utgreing av dette, det er selvforklarende.
Her kommer det også litt kjapt om hvordan du kan bruke LIKE. Her er det essensielt med wildcardet % for å matche mot resultat.
Her er det korrekt med eksempelet ovenfor:
... Eventuelt utvide med å søke i my_title også!
Redigert - 06.07.07 02:38:
Ser jeg har mangel på forklaring av hva RLIKE gjør, som kan forvirre litt. RLIKE fungerer på samme måte som LIKE gjør, bare at det er med regulære uttrykk. På den måten får du mye større muligheter til hva du skal hente ut, og ikke bare benytte deg av wildcard.
Det var det for denne gang gutter og muligens jenter, slik kan du søke i en MySQL database og sortere etter relevanse med MATCH.
Lykke til!
Innlegget ble postet 15.11.06 00:12 og ligger under kategorien PHP / MySQL. Du kan abonnere på kommentarene ved å bruke RSS 2.0 feed. Du kan legge til kommenter, eller trackback fra din blogg/side.
Flott med disse guidene her akkurat nå som jeg trenger dem! :) Har eget PHP/MySQL-programmeringsfag på IKT for tiden, så det er sikkert fler i klassen som kan få bruk for ting på bloggen din også.
Magnus Gule skrev dette 18 November, 2006 22:27 - Sitér
Flott å høre at noen drar nytte av det.
Bare å komme med forslag om hva jeg skal skrive om, har lite emner for tiden, og skriver kun om det jeg ser folk driver med på NWF.
Mikael Brevik skrev dette 19 November, 2006 03:11 - Sitér
Hvordan kan jeg med denne metoden bruke en søkestreng som denne: Lars Per "Arne Olav" -Lasse.
KrooniX skrev dette 25 Desember, 2006 15:05 - Sitér
Glem det det forige jeg "tenkte", manualen er en fin ting..
http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html
KrooniX skrev dette 27 Desember, 2006 01:40 - Sitér
Hei!
Du kan legge til
IN BOOLEAN MODEi against funksjonen så har du løst det ja. Men du fant ut av det selv, så det er bra! :)Mikael Brevik skrev dette 27 Desember, 2006 22:50 - Sitér
Fin guide!
La den til i artikkelsystemet mitt!
http://danforum.net/
Mvh. Dan
Dan skrev dette 5 Juli, 2007 20:40 - Sitér
Flott at du sier i fra.
Mikael Brevik skrev dette 6 Juli, 2007 02:36 - Sitér
Hei,
jeg holder på med et bilde/galleri-script hvor jeg ønsker å tagge bilden, men sliter med å søke i feltet. Er ordene for små (4 bokstaver ca) finner jeg dem ikke. Er det noen måte å endre på dette?
JR skrev dette 28 August, 2007 15:39 - Sitér
Bruker du MATCH med IN BOOLEAN MODE, eller bruker du LIKE eller RLIKE?
Beste måten å lage tags på er egentlig å ha en tabell med alle tagsene som blir lagd og så har du en ny tabell som binder poster til tags.
Mikael Brevik skrev dette 28 August, 2007 16:17 - Sitér