[MySQL] Fulltext Alternatief

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mathijs92
  • Registratie: December 2007
  • Laatst online: 16-09 20:34
Voor een website heb ik een textbox met autocomplete. In deze textbox kan iemand zijn naam intikken, waarna de autocomplete een lijst met namen geeft die overeen komen. In deze lijst kiest de gebruiker zijn naam, waarna een nieuw formulier weergegeven wordt.

Op dit moment werkt dit allemaal prima, met een uitzondering. ft_min_word_len staat op dit moment op 4, dat zorgt ervoor dat mensen met maar 3 letters in zowel voor als achternaam niet gevonden kunnen worden! De naam "abc def" zal op deze manier nooit gevonden kunnen worden, terwijl dit toch behoorlijk belangrijk is. Is er een workaround om dit op te lossen, of moet ik op zoek naar een nieuwe hoster?
(ik heb mijn jaarcontract net afgesloten, dat wordt dan een duur grapje)

De namen staan in de database als [voornaam, tussenvoegsels, achternaam]. Ik maak gebruik van shared hosting, ik kan ft_min_word_len dus niet zelf even veranderen.

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Je zou Spinx of Solr kunnen proberen.

De MySQL fulltext search heeft maar weinig mogelijkheden

[ Voor 29% gewijzigd door Wolfboy op 17-04-2011 14:34 ]

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • StephanVierkant
  • Registratie: Mei 2003
  • Laatst online: 08-09 16:22
mathijs92 schreef op zondag 17 april 2011 @ 13:38:
of moet ik op zoek naar een nieuwe hoster?
(ik heb mijn jaarcontract net afgesloten, dat wordt dan een duur grapje)
Je kunt natuurlijk ook je hosting provider even lief vragen of hij instellingen kan aanpassen voor je.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Vragen kan altijd, maar met de grote slecht-configureerbare blackbox dat mysql fulltext is kan je zomaar opeens abominabele performance hebben. Je beïnvloed in ieder geval ook de rest vd gebruikers, met mogelijk nog grotere db's.

{signature}


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 14:14

Matis

Rubber Rocket

Is het misschien een idee om een lokale cache bij te houden, die je (pak em beet) elk kwartier een update geeft middels (bijvoorbeeld) SQLite, welke je dan naar eigen wens kunt inrichten, met een link naar het id van de rij in de grote database. En dat je dus een fulltext search doet op alleen die lokale cache, waarna je de rest van de info uit de grote database haalt adhv het id.

[ Voor 21% gewijzigd door Matis op 17-04-2011 15:18 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Als je het zo gaat aanpakken bouw je een sphinx oplossing na. ;)

{signature}


Acties:
  • 0 Henk 'm!

  • mathijs92
  • Registratie: December 2007
  • Laatst online: 16-09 20:34
Ineens dacht ik weer aan Zend_Search_Lucene, ik gebruik het zend framework, dus ik kan hem zo gaan gebruiken.
De tabel heeft ongeveer 50.000 records, zal de performance dan goed genoeg zijn voor een autocomplete?

@hieronder, ik gebruik het zend framework al voor de rest van de website (MVC, etc). Ik gebruik Zend_Search_Lucene omdat het ingebakken is. (Ik gebruik zf dus niet alleen voor lucene)

[ Voor 30% gewijzigd door mathijs92 op 18-04-2011 11:56 ]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 14:14

Matis

Rubber Rocket

Meten = weten :)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • mathijs92
  • Registratie: December 2007
  • Laatst online: 16-09 20:34
Dat ga ik ook zeker doen, maar misschien is er iemand die ervaring heeft met Zend_Search_Lucene. Als hij zegt dat het een hopeloos traag geval is, dan ga ik het niet eens proberen.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 14:14

Matis

Rubber Rocket

Niemand kan toch voor jouw situatie spreken.
Misschien werkt het voor andere systemen/databases wel baggertraag, maar voor jouw specifieke opzet wel weer snel.
Ik zal me niet blindstaren op reviews die niet op jouw omgeving gebaseerd zijn. Daarnaast zijn 50.000 regels niet echt noemenswaardig veel. Met de indexen op de juiste plaats moet het weinig tot geen problemen opleveren (zonder ook maar enige kennis van jouw systeem te hebben).
Maar om nu een heel Framework te misbruiken om Full Text Search aan de praat te krijgen, lijkt me wat overkill. Zeker gezien de andere (misschien betere) genoemde alternatieven in dit topic.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 15:29
Kun je niet gewoon LIKE-queries gebruiken? Fulltext search is niet echt bedoeld voor het zoeken in een kolommetje met namen. Als je echt autocomplete (dus afmaakt wat iemand typt) dan krijg je een query met een wildcard op het eind (LIKE "abc%"), dan is dat met een index nog hartstikke performant ook!

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
T-MOB schreef op maandag 18 april 2011 @ 12:25:
Kun je niet gewoon LIKE-queries gebruiken? Fulltext search is niet echt bedoeld voor het zoeken in een kolommetje met namen. Als je echt autocomplete (dus afmaakt wat iemand typt) dan krijg je een query met een wildcard op het eind (LIKE "abc%"), dan is dat met een index nog hartstikke performant ook!
Dit is het juiste antwoord, TS zoekt helemaal geen FT-indexen. Het makkelijkste is om voornaam en achternaam gescheiden op te slaan en het zo aan te pakken.

Acties:
  • 0 Henk 'm!

  • Makkelijk
  • Registratie: November 2000
  • Laatst online: 11:10
mathijs92 schreef op maandag 18 april 2011 @ 11:50:
Dat ga ik ook zeker doen, maar misschien is er iemand die ervaring heeft met Zend_Search_Lucene. Als hij zegt dat het een hopeloos traag geval is, dan ga ik het niet eens proberen.
Zend_Search_Lucene is goed. Maarje moet inderdaad even kijken wat je maakt, 'search' of 'autocomplete'. Want voor het 2e heb je geen lucene nodig.

Badieboediemxvahajwjjdkkskskskaa

Pagina: 1