Etikettarkiv: bloggsökmotor

Bloggsök flyttad till molnet

Sakta men säkert så flyttar jag mina bloggprojekt till molnet och Amazon EC2 + RDS. Det rör sig först och främst om bloggsökmotorn Bloggz.se där jag även kommer att öppna upp för ett bloggsök-API med JSON + XML. Fritt för privatpersoner att använda och en mindre summa för kommersiella projekt.

Bloggz var mitt första projekt som skapades år 2007 och har sedan dess indexerat den svenska bloggosfären. Tjänster som använder sig av bloggdata är exempelvis BloggVärde, BloggNytt och BloggBilder.

Jag håller även på att komma ikapp antalet bloggar som är indexerade:

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