Sökfunktion problem med åäö och söka på vissa fraser

Permalänk

Sökfunktion problem med åäö och söka på vissa fraser

Har googlat runt men inget av det jag hittat där har löst mina problem så inga spydigheter.

Så här ser min (stavfelen är medvetna) querry ut:

KOD:
1:

2:
SELECT SQL_CALC_FOUND_ROWS *,
3:
MATCH(namn, leveranor, katagori, underkatagori, trivialt) AGAINST('$sokOrd') AS score
4:
FROM ringsignaler
5:
WHERE MATCH(namn, leveranor, katagori, underkatagori, trivialt) AGAINST('$sokOrd' IN BOOLEAN MODE)
6:
ORDER BY score DESC
7:
LIMIT $limit
8:

Min söksträng kommer in så här:

KOD:
1:

2:
$sokOrd=$sokOrd."*";
3:

För att jag ska söka på allt som har det söka i sig.

Om jag tar problemen ett i taget.

1. ÅÄÖ funkar inte, om jag vill söka på tex "Snövit" som jag vet finns så hittas inget. Kör "utf8_encode" på min söksträng för min databas är i iso. Vad kan vara fel?

2. Som ni ser så har jag satt sökning på även kategorier och underkategorier. Men när jag söker på tex "sms" hittas inget i den kategorin medans det funkar fint om jag söker på tex "djur".

Edit: Det hela går att testa på sidan: http://hampis.se/?valdSida=ringsignaler

Permalänk

1. Varför utf8-encodar du sökordet om databasen är i iso?

Visa signatur

/Mvh Stefan

Permalänk

1. Vad bör jag göra istället?

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av -=*ThE_cRoW*=-
1. Vad bör jag göra istället?

Vad händer om du inte gör något alls?

Permalänk

Funkar inte då heller. Har även testat decode.

Databasen är som sagt i iso och det jag skickar in är i utf8.

Permalänk
Medlem

gör om ALLT till utf8? dvs databasen, datan i datbasen, kopplingen till databasen (detta är lätt att glömma) och slutligen dina filer.

Permalänk

Går inte göra om databasen, den måste få vara i Iso då det är inmatat dryga 10 000 poster i det formatet.

Det här går ju lätt att lösa i vanliga fall med utf8-encode men det verkar hända något speciellt när man använder MATCH så jag tror problemet ligger där.

Permalänk
Medlem

Använd ISO mot ISO-databas.

Visa signatur

Kom-pa-TI-bilitet

Permalänk

Teknocide, Utveckla. Är det inte det jag gör då jag gör om min utf text till iso?

Permalänk
Medlem

Ursäkta mig, jag var definitivt oklar.

Du skriver att du använder utf8_encode? Om databasen kör ISO-8859-1 så representeras varje tecken en 8-bitars byte, medan UTF-8 använder två (gissar jag) bytes för svenska tecken. Du har på din sida specifierat innehållet som UTF-8 med taggen <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />. Användarens inmatning skickas med största sannolikhet som UTF-8 till ditt PHP-script, så det du borde göra är att köra en utf-8_decode, alternativt ändra din meta-tag till ISO-8859-1 vilket jag tycker låter vettigare då detta bättre reflekterar innehållet i databasen. Glöm inte att byta encoding på dina källfiler ifall du ändrar charset.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Personligen tycker jag att LIKE är smidigare att använda än Match, men det är kanske bara tycke och smak...

Visa signatur

Q9450@3.2 w/ TRUE 120, Noctua PF-12 | Asus Maximus Formula w/ 2 HR-05 SLI | Asus 8800 GTS 512 w/ Hr-03 | Corsair TX750W | OCZ 4GB DDR2 PC2-8000 ReaperX | Antec P182

Permalänk

Tack för den mer ingående förklaringen Teknocide, men utf-8_decode har jag redan testat också utan resultat. Det fungerar på alla andra ställen förutom då i det här fallet med sökningen.

Men jag börjar tänka efter och har insett att jag kan ha sagt fel.

Själva källkodfilerna är i utf-8, användarnas inmatning är som du säger i utf-8 och nu insåg jag att det jag sparat ner i databasn är nersparat i utf-8. Det enda som är i iso är själva databasens huvud språk eller vad man nu ska kalla det.

Permalänk
Medlem

Det är inte så att du har html encodat texten i databasen så att åäö är html enteties (dvs å = & aring; )?

Permalänk

Nä, tex "Ä" ser ut så här i databasen: "ä". Och det känns väl som standard "matat in utf8 i iso databas?