Een zoekmachine bouwen #7 - Backlinks & Tabellen
22 juli 2018Waar ik tot nog toe geen aandacht aan heb geschonken: backlinks. Er is ook een goede reden voor, namelijk de tijd van het berekenen hiervan. Wat ik nu heb gedaan, is een eerste stap naar een PageRank-achtig systeem.
In eerste instantie ben ik nu aan het bepalen hoeveel absolute backlinks er zijn, waarbij ik dus één backlink per domein reken. Als op voorbeeldA.nl bijvoorbeeld 12 backlinks naar voorbeeldB.nl staan, reken ik er maar 1. Het is namelijk maar 1 unieke bron, ongeacht de hoeveelheid.
Op dit moment staat de teller op 3,1% van de totale data die ik heb. En nu al heeft Facebook welgeteld 46673 backlinks te pakken van unieke domeinnamen, Twitter 35841 en Instagram 12165. Mocht er dus nog een dorpsgek rondlopen die wil beweren dat social media geen echte rol in het leven speelt... in - your - face.
3,1% is ca. 101.000 domeinnamen. Heftig, want dat betekent dat 46% van de domeinnamen die nu voorbij gekomen zijn een backlink hebben naar Facebook.com. Ik ben benieuwd in hoeverre dat cijfer nog verandert wanneer er meer data binnen is. Mijn hypothese op dit moment is dat dit getal wel gaat zakken, omdat de populatie op dit moment nog niet representatief is.
Waarom denk ik dat? De eerste 100.000 websites zijn zonder meer de websites die het snelst gevonden zijn, dus waarschijnlijk het meest actief, wat er toe leidt dat ze beter onderhouden zijn en op alle fronten moderner. En een moderne website... daar hoort Facebook natuurlijk bij. Binnen enkele uren weet ik het.
Langzamerhand begin ik wel steeds meer toepassingen te zien voor de data die ik verzamel:
- ik weet precies welke domeinnamen over SSL lopen
- ik weet welke domeinnamen het meest interessant zijn om een backlink van te krijgen
- ik weet de connectiesnelheden van de servers waar de websites op draaien
- ik heb de data om text mining toe te passen en websites te clusteren op onderwerp
- en nog veel meer
Dit zijn natuurlijk zaken die met name interessant zijn voor commerciële partijen. Neem bijvoorbeeld de SSL verbindingen... er zijn vast wel webdesignbureaus die hierin geïnteresseerd zijn. Een website zonder SSL is commercieel gezien not done tegenwoordig en wordt meer en meer afgestraft, met Google voorop.
De enige interessante data voor die doelgroep die ik op dit moment niet verzamel, is of de websites responsive zijn. Wanneer je een website hebt die niet responsive is en ook geen gebruik maakt van SSL, kan het wel eens interessant zijn om ze te bellen. Zeker wanneer het backlinkprofiel aangeeft dat de websites wel bezocht worden, of er in ieder geval naar verwezen wordt. Een snelle, simpele hack om dat te doen, lijkt mij door te controleren of ze gebruik maken van Bootstrap. Niet 100% accuraat, maar waarschijnlijk wel >95%.
Ik had gedacht ondertussen al dieper in websites te gaan crawlen, maar daar ben ik nog niet eens aan toe gekomen. Tot nu toe is het veel leuker om bezig te zijn met de huidige dataset en te kijken welke data ik er nog niet uitgehaald heb. Dat vormt vervolgens de basis voor andere zaken. Ook moet de manier waarop de scores en de keywords worden opgeslagen nog aangepast worden. Al met al: genoeg te doen.
Tabellen
Zoals eerder gezegd, is het verstandiger om de tabellen verder uit te splitsen. Op dit moment heb ik dat gedaan door keywords onder hun alfanumerieke beginletter op te slaan. Dat wil zeggen, het woord "banaan" wordt opgeslagen in de tabel phrase_b_1w. Dat laatste deel wil zeggen dat het een enkel keyword is. Er zijn ook 2w en 3w varianten.
Op basis van de 3w varianten kan ik teksten met relatief hoge waarschijnlijkheid aan elkaar koppelen. Als er gezocht wordt op "bananen zijn heel lekker", dan ga ik er vanuit dat als ik op "bananen zijn heel" en "zijn heel lekker" zoek, dat die overlap ervoor zorgt dat mijn resultaat klopt. 100% accuraat is het niet, maar op dit moment wel een haalbare, efficiënte oplossing. :-)
Het nadeel is natuurlijk wel, dat de index wéér opnieuw opgebouwd moet worden. Maar hopelijk blijft de snelheid er lekker in op deze manier.
More to come...
Database & Data
Via een aantal sites heb ik lijsten met domeinnamen geïmporteerd. De meeste had ik al gevonden, maar niet allemaal. Er zijn er ongeveer 100.000 bijgekomen, waardoor ik weer een nieuw startpunt heb om verder te gaan crawlen.
De database ziet er als volgt uit:
Het is dus een flinke database, maar dat komt met name door de full_cache tabel, waarin de hele pagina als HTML wordt opgeslagen.
Wel zit ik na te denken over het feit dat 228,1GiB van de 257,6GiB bestaat uit deze cache tabel. Effectief is de database dus maar 29,5GiB. Ik heb de database nu direct op de bigstorage draaien, maar dit is mogelijk niet nodig. Ik heb nog 268,7GiB vrij op de SSD van de server, dus ik kan (met terugwerkende kracht) de cache beter op de bigstorage plaatsen en de database zelf op de lokale opslag.
Tegelijkertijd wordt m'n totale capaciteit hiermee wel ongeveer 7x kleiner. Het is dus een trade off. Daar denk ik nog even over na...
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: Edwin Dijk
TimeTick producten
Urenregistratie software
Gratis urenregistratie software