Skapa din egen bloggsökmotor

Ett av mina första webbprojekt var den svenska bloggsökmotorn Bloggz.se som jag skapade i början av 2007. Med hjälp av den erfarenheten och kunskapen så tänkte nu gå igenom hur du som utvecklare lätt och enkelt kan skapa din egen bloggsökmotor med hjälp av php- eller python-kunskap.

Steg 1 – Hitta bloggar

Först och främst så måste vi ju hitta URL:er till bloggar och sedan måste vi lista ut om de bloggar om svenska eller ej. Så mitt tips är att börja genom att ladda hem och parsa följande fil från Google (var 10’de minut exempelvis):

http://blogsearch.google.com/changes.xml

Denna fil är på ca 12 MB och innehåller ca 71 000 bloggar, varje rad ser ut på ungefär följande sätt:

<weblog name=”Filmklipp hos Filmpasset.se” url=”http://filmpasset.se/” rssUrl=”” when=”2″ sourceIp=”72.233.56.145″ />

Steg 2 – Parsa bloggar

Vi har nu gigantiska listor med bloggar och det vi måste göra nu är att besöka dessa bloggar och hämta ut relevant information och här finns det två viktiga komponenter:

  • Hitta RSS-feeden på bloggen
  • Parsa RSS-feeden på bloggen

Det kan låta trivialt men det finns miljoner olika kombinationer på ovan två komponenter. Jag kan rekommendera Feedfinder samt Feedparser (från svn).

Det du gör nu är att du skapar en databas med URL:er till alla bloggar och fyller sedan på med de RSS-url’er som du hittar med hjälp av Feedfinder, detta arbete kan trådas med fördel. Se på Pythons queue

Steg 3 – Klassificera språk

Det vanligaste sättet att klassificera språk är ngram (bi/tri-gram) och jag använder mig av följande implementation: ngram.py som är skriven av Thomas Mangin. Detta måste så klart göras efter du har hämtat hem de inlägg som hittas på bloggen. Glöm inte att spara undan HTTP-headers såsom last-modified och etag som gör att du inte behöver besöka bloggen i onödan om den ej är uppdaterad.

Steg 4 – Gör allt sökbart

Nu när du har inlägg och bloggar i en databas så behöver du bara göra allt detta sökbart, snabbt. Och då kan jag rekommendera Sphinxsearch där du gör en main och ett delta-index som uppdateras kanske en gång i veckan vs. varje timme beroende på hur mycket information som ska indexeras.

Och nu behöver du bara göra ett trevligt webb-gui till databasen och Sphinx-indexet.

Överkurs

Det du kan tänka på också när du parsar bloggar är att spara undan länkar som du hittar i inläggen för att sedan använda denna information för att vikta sökresultet samt hitta fler bloggar att lägga till. Jag sparar exempelvis undan denna information och använder den på bl.a BloggBilder.se och BloggVärde.se (och snart kanske BloggAnalys.se)

Kuriosa

Utifrån sourceIp i changes.xml så pingar dessa Google flest gånger:

13674 66.197.201.21
12006 59.40.198.153
4875 72.233.56.144
4807 72.233.56.156
4719 72.233.56.145
2070 66.207.161.106
2056 221.186.141.201
1785 202.108.35.60
906 124.42.34.18
577 74.125.44.136
544 69.59.185.172
533 62.129.193.27
532 69.10.46.130
491 91.121.157.178
360 221.186.141.206
354 219.239.93.69
325 208.110.66.194
281 89.161.143.129
267 82.96.94.35
259 219.94.203.126
  13674 66.197.201.21 colo4.socialknowledge.net.

  12006 59.40.198.153 153.198.40.59.broad.sz.gd.dynamic.163data.com.cn.

   4875 72.233.56.144 wordpress.org

   4807 72.233.56.156 wordpress.org

   4719 72.233.56.145 wordpress.org

   2070 66.207.161.106 HostKitty Internet Services

   2056 221.186.141.201 idcgw.cyberz.co.jp.

   1785 202.108.35.60 ChinaUnicom

6 reaktioner på ”Skapa din egen bloggsökmotor

  1. Intressant, tack för att du skrev detta så detaljerat! Jag gissar att det knepiga sedan handlar om att få sökmotorn att visa relevanta träffar vid sökningar, samt att filtrera bort spambloggar.

    Hamnar alla bloggar i Googles bloggsökmotor, eller bara de som pingar Google?

  2. Martin Källström: Sugen på att starta en bloggsökmotor? ;)

    Christian: Det funkar så att WordPress.com samt OpenSource versionen har pingomatic inbyggt och pingomatic ska pinga Google och sedan så hamnar det i deras changes.xml

  3. Lite kul att mina domän fick vara med i exemplet :) Filmpasset.se vill säga.

    i övrigt så låter det intressant att börja grejja lite med en bloggsökmotor.

    Cya /
    Crille

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *