Een zoekmachine bouwen #8 - PageRank, Zoeken, etc.

5 december 2019

Na een tijdje heb ik dit project weer even opgepakt. :-)

Dat een database engine van invloed is op de snelheid van je database, zal niemand verbazen. Al jaren heb ik het vermoeden dat voor dit soort "snelle' databasetoepassingen, MyISAM beter geschikt is dan InnoDB.

Althans, ik zeg "vermoeden", maar ik heb het gemeten en bewezen. Het probleem is dat er geen algemene regel in te vinden is. In het kort komt het erop neer: wat is sneller, table locking of row locking? In mijn applicatie is table locking wel degelijk sneller en werkt alles met MyISAM letterlijk twee keer zo snel. Zelfs nadat ik InnoDB op basis van best practices helemaal had ingericht. Jouw applicatie kan daarentegen compleet anders reageren, omdat het afhankelijk is van de software én hardware.

Ik heb de bigstorage weggedaan en heb besloten me volledig te focussen op de data die ik wél verzamel, ofwel mijn eigen cache. Mijn eigen cache is namelijk een distillaat van de gegevens die ik wil hebben, zonder alle onnodige onzin. Ik heb dus de 5TB bigstorage weggedaan, niet alleen omdat het geld niet op m'n rug groeit, maar ook omdat het in mijn beleving niet heel veel extra meer toevoegt nu ik mijn eigen caching op orde heb.

Daarnaast heb ik een nieuwe server genomen voor dit project. De vorige met 4 cores en 8GB RAM was een beetje overdreven voor een hobbyproject, dus dit is nu gehalveerd naar 2 cores en 4GB RAM. Mijn plan is nu: eerst maar eens die 140GB die ik aan schijfruimte heb, efficiënt en effectief benutten - zonder dat de crawler of indexer hierbij last heeft van performance drag.

PageRank

Grapje natuurlijk, het is geen echte PageRank. Het is wel een systeem om domain authority vast te stellen. Op dit punt is het zo dat de hoeveelheid links die je naar je domein hebt, vermenigvuldigd wordt met 5. Dit geeft een bepaald aantal punten, en dat wordt opgeteld bij de score die je op basis van je content hebt. Op die manier heeft het geen gigantische invloed, maar helpt het wel mee om écht populaire websites bovenaan te krijgen in de zoekresultaten. Of de vermenigvuldiging echt met 5 moet, of dat een ander getal hier uiteindelijk beter voor is, zie ik later in het proces wel.

Zoeken

De manier waarop het systeem bedacht is, is dat er key phrases worden opgeslagen van 1, 2 en 3 woorden. Om te kunnen voldoen aan langere key phrases zoals "Wat is precies een zoekmachine" (5 keywords), kunnen we zoeken naar pagina's die zowel "wat is precies", "is precies een" en "precies een zoekmachine" hebben. Omdat deze resultaten overlap met elkaar hebben, is de kans groot dat ze onderdeel uitmaken van dezelfde zin. Het is een hypothese die ik nog moet testen, maar ik heb grootse verwachtingen.

Wel heb ik al ingebouwd dat als er bijvoorbeeld geen resultaat is voor "fietsenwinkel hoofddorp" omdat die exacte woordcombinatie niet voorkomt in de database, hij automatisch zoekt naar websites waar zowel "fietsenwinkel" als "hoofddorp" voorkomen. Op die manier kun je toch relevante resultaten krijgen, zonder dat er een exacte match is.

Databasetabellen

De database geeft in principe weinig problemen, behalve de "link" tabel. (De databasestructuur kun je in mijn vorige blog terugvinden.) Hier komen toch wel erg veel records in en met name InnoDB kan er niet mee uit de voeten door het gelimiteerde RAM-geheugen.

Mysqltuner stelde voor of ik even 17GB voor de indexes wilde toewijzen... hoe graag ik dat ook zou willen doen, zoveel geheugen heeft de server niet. Inmiddels heb ik deze tabel omgezet naar het van MyISAM afstammende Aria. De performance hiervan lijkt op het eerste gezicht iets beter dan MyISAM, maar ik heb geen geisoleerde benchmark gehouden dus ik kan het verkeerd hebben.

Dus...

In conclusie: ik heb de boel weer draaiende, met grotendeels originele code. Ik heb een aantal verbeteringen aangebracht en nu is het weer een kwestie van tijd voordat hij een fatsoenlijke index heeft opgebouwd.

Tweet deze blog:


Of Like hem op Facebook!

Twitter


 

Internet Marketing

Een zoekmachine bouwen #8 - PageRank, Zoeken, etc.
Geplaatst op 5 december 2019

Een zoekmachine bouwen #7 - Backlinks & Tabellen
Geplaatst op 22 juli 2018

Een zoekmachine bouwen #6 - Full page cache
Geplaatst op 13 juli 2018

Een zoekmachine bouwen #5 - Een stap verder
Geplaatst op 11 juli 2018

Auteur:

 

TimeTick producten
Urenregistratie software
Gratis urenregistratie software