Søg på ord med og uden mellemrum

Tags:    mysql

Jeg har lavet et script der henter genre fra et track på soundcloud og skal finde IDet på de genre i min database.

har lavet det her, og det virker fint.
Fold kodeboks ind/udPHP kode 


nu fandt jeg så ud af af nogen af deres genre hedder etc "techtrance" hvor min hedder "tech trance", så skal have fundet ud af hvordan jeg kan få den til at ingore mellemrum, kunne selv følgelige tilføje ordet 2gange med og uden mellemrum, men tænke der var en smarter måde at løse det på i SQL.

og da jeg gerne vil lære noget mere end det jeg ved, valgte jeg ikke lave den løsning med at tilføje det 2 gange.


håber det giver mening.



Indlæg senest redigeret d. 02.02.2012 21:32 af Bruger #3427
6 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Enten match med REGEXP:
SELECT * FROM table WHERE col REGEXP 'tech\s*trance'

eller match med LIKE:
SELECT * FROM table WHERE col LIKE 'tech%trance'



Indlæg senest redigeret d. 02.02.2012 21:35 af Bruger #10216
Nu er jeg ikke PHP ekspert, men i de sprog jeg kender ville jeg enten lave en replace eller trim.

Iflg. google kan du replace sådan her:
Fold kodeboks ind/udPHP kode 


Og trim kan du slå op på google. Virker også som jeg ser det i PHP.



@brian, trim fjerner elementer fra starten og slutningen af strenge. ikke tegn i løbet af strengen.

str_replace er den naive løsning - Michaels er den bedste måde at implementere søgningen på.



Enten match med REGEXP:
SELECT * FROM table WHERE col REGEXP 'tech\s*trance'

eller match med LIKE:
SELECT * FROM table WHERE col LIKE 'tech%trance'


jeg får "techtrance" retur fra soundcloud og ønsker at finde "tech trance" i min database.
så jeg har ikke nogen ide om hvor % eller \s* skal indsættes. - da der ik er nogen mellemrum at replace på.







Så kan du måske lave en fulltext søgning:

Fold kodeboks ind/udSQL kode 


Det kræver at du har en kolonne med fuldtext index, og din tabel skal bruge MyISAM motoren.

http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html



Indlæg senest redigeret d. 02.02.2012 21:53 af Bruger #10216
Så kan du måske lave en fulltext søgning:

Fold kodeboks ind/udSQL kode 


Det kræver at du har en kolonne med fuldtext index, og din tabel skal bruge MyISAM motoren.

http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html


takker, vil lige prøve at kigge på det.

edit:
Virker desværre ikke, den kan ik finde tech trance ved søgning på techtrance.

det virker hvis jeg søger med bindestreg istedet for ingen mellemrum, så tror det er noget i den her stil jeg søger, dog virker det ikke uden mellemrum.


edit edit:
Tak for hjælpen gutter, men jeg kommer til at finde på en andne løsinng, da jeg tror det brugeren der indtaster genren på soundcloud og ikke noget fra deres database.

fik lige en der hed; housemusic nemlig, hvor min hedder house

jeg finder på en anden løsning, ellers mange tak.



Indlæg senest redigeret d. 04.02.2012 16:50 af Bruger #3427
t