MySQL Fulltext search case sensitive

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Onbekend Onbekend

Onbekend Onbekend

13/03/2009 15:47:00
Quote Anchor link
Hey,
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)
PHP script in nieuw venster Selecteer het PHP script
1
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


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?
 
PHP hulp

PHP hulp

21/12/2024 18:16:37
 
Kees Schepers

kees Schepers

13/03/2009 16:47:00
Quote Anchor link
Heb je misschien de collatie intussen aangepast? Dan zou je je tabel opnieuw moeten laten indexeren.

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.
 
Onbekend Onbekend

Onbekend Onbekend

14/03/2009 14:59:00
Quote Anchor link
Ik moet boolean search hebben ;)

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().
 
Max S

Max S

14/03/2009 20:22:00
Quote Anchor link
En als je met alleen maar hoofdletters zoekt, werkt het dan wel?
 
Onbekend Onbekend

Onbekend Onbekend

15/03/2009 09:03:00
Quote Anchor link
Als ik het veld (games.title) omhoog wil krijgen met UPPER() krijg ik een syntax error.

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
 
Onbekend Onbekend

Onbekend Onbekend

16/03/2009 09:33:00
Quote Anchor link
Bump
 
Kees Schepers

kees Schepers

16/03/2009 10:24:00
Quote Anchor link
Ik draagde alleen maar ideeën aan, je moet niks van mij he.

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.
 
Onbekend Onbekend

Onbekend Onbekend

17/03/2009 09:43:00
Quote Anchor link
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?
 
Kees Schepers

kees Schepers

17/03/2009 15:17:00
Quote Anchor link
Vreemd. Je zou het inderdaad wel verwachten. Hier nog een quote van een andere user:

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.