MySQL Fulltext search case sensitive
Ik heb een query, werkt perfect, maar als ik nou zoek met een string, zonder hoofdletters, let's say 'hello world'. In de database staat: 'Hello world'. Worden er geen resultaten gevonden.
Dit is mn query:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
SELECT
games.title,
games.urlTitle,
games.id,
MATCH (games.title) AGAINST ('hello' IN BOOLEAN MODE) AS matches
FROM games
WHERE
games.language = 'en'
AND games.deleted = 0
AND MATCH (games.title) AGAINST ('hello' IN BOOLEAN MODE)
ORDER BY matches
games.title,
games.urlTitle,
games.id,
MATCH (games.title) AGAINST ('hello' IN BOOLEAN MODE) AS matches
FROM games
WHERE
games.language = 'en'
AND games.deleted = 0
AND MATCH (games.title) AGAINST ('hello' IN BOOLEAN MODE)
ORDER BY matches
Het type van games.title is uf8_general_ci, ik heb er meerdere geprobeerd, maar niets is case-insensitive. Als ik 'Hello' invul dan krijg ik wel resultaat, met kleine letter dus niet. Weet iemand hier een oplossing voor?
Probeer trouwens ook eens de query uit te voeren zonder IN BOOLEAN MODE ik lees in de comments dat hij blijkbaar dan wel case insensitive is..
Wat ik trouwens een gaaf alternatief vind is Zend_Search_Lucene voor tekst te indexeren.
Ik heb de tabel opnieuw laten indexeren.
Ik krijg dit ondertussen nog steeds niet aan de praat zuig MySQL. Maar dit moet gewoon worden, hoef ik dat onderdeel van ZF niet te gebruiken. Ik heb namelijk mn eigen zoek systeempje. Heel simpel, gaat gewoon alle geselecteerde controllers af en pakt daarvan de searchAction().
En als je met alleen maar hoofdletters zoekt, werkt het dan wel?
Edit: ik weet eigenlijk niet of ik wel goed zit bij MySQL Fulltext search. Ik wil dus als ik bijv 'h' intyp, hij gaat zoeken naar alle rijën met een h er in.
Gewijzigd op 01/01/1970 01:00:00 door Onbekend Onbekend
Bump
Maar al op de MySQL manual gekeken? Bij het full-text gedeelte, hier las ik in de user comments dat MySQL beperkte ondersteuning bood op dat gebied.
Wat je ook nog kan doen is kijken naar een andere storage engine die beter full-text kan indexeren en die eventueel mee te compilen met MySQL.
Nog even terug komen op mijn opmerking, heb je wel geprobeerd zonder 'IN BOOLEAN MODE' ? Want dit vertel je namelijk niet, ben benieuwd of het probleem dan wel of niet optreedt.
Ik heb al bij de MySQL docs gekeken ja. Maar ik moet gewoon boolean mode hebben. Zo simpel is het. En het zou toch gewoon case insensitive moeten zijn of niet?
Quote:
I find that IN BOOLEAN MODE is the only thing that actually returns results back. I don't understand why either. Also, I found that utf8_bin causes a lot of issues with FULLTEXT searching, (not reporting a bug), most likely because it's some sort of CASE SENSITIVE, or something kind of search, however I changed from utf8_bin to utf8_general_ci, and my BOOLEAN MODE FULLTEXT searching works great.
Lijkt toch veel met karakter/set collatie te maken, welke heb je allemaal geprobeerd? En heb je na het aanpassen van de collatie/karakter set MySQL ook de tabel opnieuw laten indexeren?
Quote:
Edit: ik weet eigenlijk niet of ik wel goed zit bij MySQL Fulltext search. Ik wil dus als ik bijv 'h' intyp, hij gaat zoeken naar alle rijën met een h er in.
Vreemd, normaal (standaard) indexeerd MySQL ngeen woorden die minder als 3 tekens zij. (Zie: http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html)
Overigens ben ik ook niet zo fan van MySQL full-text searches, ik gebruik meestal alternatieven zoals ZL of iets anders.
Gewijzigd op 01/01/1970 01:00:00 door kees Schepers