Toon posts:

[PHP/SQL] Forum met searchfunctionaliteit

Pagina: 1
Acties:
  • 114 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoi :)

Ik ben bezig een forum-module aan het schrijven. Een beetje forum heeft natuurlijk een leuke search-functie, maar zodra je forum groeit wordt het doorzoeken van de 'live data' geen optie meer. Ik zoek naar een oplossing die zowel goede zoekresultaten oplevert als efficiënt is.

Mogelijke oplossingen:
  • Indexes maken in (My)SQL en indexes erop loslaten
  • Querycache optimaliseren en veel geheugen aan MySQL toekennen, zodat je wel een grote dataset kunt 'scannen' maar de meeste dingen via de cache worden opgevangen.
  • Zelf een index maken van elk woord dat in alle postings voorkomt. Als een user dan zoekt op "wolf kroket" dan kijk je in de search tabel naar deze twee woorden waar een serie posts uitkomen die deze woorden bevatten.
Zelf lijkt me de laatste optie het meest verstandig. Deze zal het snelste zijn met zoeken, en enkel bij het posten wat meer load op de server leggen. De oplossing zal ook heel schaalbaar zijn, waarmee ik bedoel dat de snelheid op pijl blijft zodra het forum groeit naar > 4GB.
Het nadeel van deze optie is echter dat je alleen op hele woorden kunt zoeken. Dus stel je zoekt op "kroke" dan krijg je geen hits voor posts die "kroket" bevatten. Dat vind ik een serieus nadeel!

Mijn vraag aan jullie is welke andere mogelijkheden jullie kennen, en hoe andere (grote) forums als React dit afhandelen. In de huidige fase van ontwikkeling kan ik nog makkelijk fundamentele veranderingen aanbrengen aan het design. Alvast bedankt voor jullie input! :)

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 10:32
Al geinventariseerd hoe andere grote forums dit doen?
phpBB, vBulletin en MyReact gebruken meen ik allen indexen en zoekt de zoekfunctie oook gewoon door de live data.
Bij een goede tabelopbouw en indexen hoeft dit ook helemaal niet sloom te worden bij grote tabellen.

  • Niox
  • Registratie: Augustus 2003
  • Niet online

Niox

I'm sorry, who?

GoT (en het forum van fok) gebruiken Omega. Een losstaande search engine geschreven in C++. Maar die optie is alleen intresssant als je echt een groot forum hebt.

Als je alles onder controle hebt, ga je gewoon niet snel genoeg.
A man is rich in proportion to the number of things he can afford to let alone.


  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Misschien kun je htdig gebruiken. Die kun je ook direct in PHP aanspreken.

Nu met Land Rover Series 3 en Defender 90


Verwijderd

Topicstarter
frickY schreef op maandag 02 oktober 2006 @ 08:46:
phpBB, vBulletin en MyReact gebruken meen ik allen indexen en zoekt de zoekfunctie oook gewoon door de live data.
Door live data zoeken? You have *GoT* to be kidding! Dat betekent een search doen op bijvoorbeeld 2GB aan tekst?
Als je nou zoekt in een topic ofzo kan ik me dat voorstellen, maar een generieke search? Ik denk dat mijn server met een grote dataset wel een paar minuutjes nodig heeft minimaal, om over het aantal zoekopdrachten per seconde maar niet te spreken. :X Of mis ik nu iets?
MTWZZ schreef op maandag 02 oktober 2006 @ 08:50:
Misschien kun je htdig gebruiken. Die kun je ook direct in PHP aanspreken.
Mja dat gaat dan eigenlijk extern om. Zou kunnen, maar echt sexy vind ik dat niet. :P

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09-12-2025
Kijk eens naar de Full-Text Search in mysql. Daarmee kun je goed zoeken in je live data. En volgens mij gaat dat nog best rap.

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
Michali schreef op maandag 02 oktober 2006 @ 09:19:
Kijk eens naar de Full-Text Search in mysql. Daarmee kun je goed zoeken in je live data. En volgens mij gaat dat nog best rap.
Dat zou qua implementatie wel een stuk makkelijker zijn. Maar waarom gebruiken andere forums dit dan niet? :P

Hij kan ook apple* doen waarbij hij zoekt op apples. Ik ben wel benieuwd naar de snelheid hiervan. Eigenlijk zou ik een paar benchmarks moeten doen. Maarja ik ga er vanuit dat deze functionaliteit in toekomstige versies van MySQL nog verder uitgebreid en verbeterd zal worden, dus een slechte designkeuze zal het wellicht niet zijn.

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 10:32
Dat gebruiken andere fora wel, en is ook precies waar ik op doelde.
Full text-index en met MATCH AGAINST in boolean mode eroverheen.

Let er wel op dat deze functionaliteit niet beschikbaar is in InnoDB tabellen, alleen in MyIsam.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 12-02 10:41

chem

Reist de wereld rond

Niox schreef op maandag 02 oktober 2006 @ 08:49:
GoT (en het forum van fok) gebruiken Omega. Een losstaande search engine geschreven in C++. Maar die optie is alleen intresssant als je echt een groot forum hebt.
Nee, we gebruiken Xapian met een omega-frontend/interface; je kan rechtstreeks met xapian interfacen (ook via php), maar wij hadden weinig zin om het wiel opnieuw uit te vinden.

MySQL full text search is een lachertje. Het is een leuke poging, maar voor een redelijk grote db is het toch om te janken.

Klaar voor een nieuwe uitdaging.


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09-12-2025
Dus dat Xapian is software die de MySQL database voor je doorzoekt? Of moet ik dat anders zien?

Noushka's Magnificent Dream | Unity


  • KurtDB
  • Registratie: Juni 2004
  • Laatst online: 09-02 20:28
Michali schreef op maandag 02 oktober 2006 @ 13:21:
Dus dat Xapian is software die de MySQL database voor je doorzoekt? Of moet ik dat anders zien?
Als ik het correct begrijp dan is xapian zoiets als lucene voor java. Dat betekent dus dat er indexen gemaakt worden voor de tabellen die jij bepaalt. Zo kan je dus snel 'n index search gaan doen. (hij gaat eerst in zijn eigen indexen zoeken waardoor je al 'n query op je databank bespaart)

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 11-02 16:00

NetForce1

(inspiratie == 0) -> true

Lucene is overigens ook beschikbaar voor PHP in het Zend Framework zie: documentatie en blog post. Helaas is het Zend Framework nog maar in preview fase. Solr is misschien ook wel een interessant project. Solr is gebouwd bovenop Lucene en is bedoeld om een eenvoudige interface te bieden voor webdevelopers, er wordt ook gebouwd aan een php variant.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 12-02 10:41

chem

Reist de wereld rond

Michali schreef op maandag 02 oktober 2006 @ 13:21:
Dus dat Xapian is software die de MySQL database voor je doorzoekt? Of moet ik dat anders zien?
Het staat er helemaal los van; je moet ook zelf de data in xapian pompen om het te doorzoeken.

Voordeel van dergelijke dedicated systemen is dat er veel meer tijd gestoken wordt in zoeken op keywords en phrases, ipv wat een rdbms vooral hoort te doen: integriteit bewaren en relaties leggen. Nou ja, mysql bakt daar dan weer niet veel van, maar goed.

Klaar voor een nieuwe uitdaging.


  • mithras
  • Registratie: Maart 2003
  • Niet online
Wat http://www.ubuntuforums.org/ afgelopen weekend heeft gedaan tijdens een upgrade is het toevoegen van tag support: http://ubuntuforums.org/tags/
Je kan dat implementeren, zodat aan elk topic een (aantal) tags worden gehangen. Beetje web2 idee :p
Pagina: 1