Hur en sökning går igenom de olika lagern i arkitekturen

Sökprojektet fortskrider – indexering, arkitektur och featuresök

En månad in i sökprojektet börjar det utkristallisera sig några delprojekt att hugga tänderna i för att ta detta fram mot en bättre och mer kvalitativ söktjänst.

“När spindeln var klar med indexeringen insåg vi hur stor KTH.se var!”

Indexering av KTH.se, 650 domäner och fyra miljoner sidor.

Efter att ha gjort några testskott med en test-proxy framför sökmotorn så har vi nu implementerat en mer robust proxy. Med den på plats och en hel del jobb med att få systemägare att förbättra sina systems egna robots.txt-filer så har vi nu fått en indexstorlek på ungefär 600.000 sidor. Till detta ska vi sedan lägga allt inloggningsskyddat material så siffran är fortfarande mellan tummen och pekfingret.

Proxy som hanterar hänvisningar av crawlern om canonical url finns

I början väntade vi med spänning på hur många sidor som skulle hittas av sökmotorn och när spindeln var klar med indexeringen insåg vi hur stor KTH.se var…4 miljoner sidor! Kunde det verkligen stämma? Efter några djupdykningar hade vi svaret på många av frågeställningarna som hade uppkommit och det fanns en hel del förbättringar att göra.

Länken rel=”canonical” blev en viktig pusselbit

Sedan länge har vi haft länken rel=canonical implementerad i vårat cms (som i sig bygger på Polopoly) för att undvika att sökmotorerna indexerar duplicerat innehåll. Via proxyn kunde vi nu se till att bara orginalsidan indexerades genom att titta på canonical-länken.

Efter den ändringen så halverades indexstorleken men det fanns många andra delar att se över. Några av de var olika interna söktjänster och formulär som indexerades med parametrar vilket gjorde att vi fick väldigt många orelevanta sidor i indexet.

Efter att ha fixat dessa samt gått igenom delar av listan på KTH:s c:a 650 domäner och kontaktat ett flertal systemägare för att få robots.txt-filer uppdaterade i de större systemen är vi nu nere i c:a 600.000 sidor. Det känns som en rimlig siffra i sammanhanget.

Teknisk arkitektur – hur vi ser på det just nu

Oberoende av sökmotor har vi identifierat några olika lager som behövs i arkitekturen för att göra detta till den modulära och utbyggbara söktjänst vi har som målsättning att ta fram. Vi ser sökmotorn som en komponent av många andra som i sig ska gå att byta ut om vi känner att det skulle behövas i framtiden. Söktjänsten ska också kunna användas bl.a. av andra mer nischade söktjänster varav vi därför behöver ha “utifrån och in”-perspektivet i åtanke. Detta eftersom vi idag inte vet hur andra kommer använda denna tjänst i framtiden.

Hur en sökning går igenom de olika lagern i arkitekturen

 Flera parallella arbetsspår

För att få upp farten i projektet har vi identifierat ett flertal spår som vi kan jobba med parallellt eftersom vi vet att vissa av dessa (implementation av integrering för lösenordsskyddat material och arbetet med att trimma indexet) har en del ledtider i sig.

Rent implementationsmässigt jobbar vi just nu med api:et för att kunna ta hand om inkommande frågor och slussa dessa rätt samt baka om innehållet i svaret till maskinläsbar kod på olika format som JSON och XML. Vi har även byggt en enkel webbapplikation som gränssnitt för besökaren och en “sökmotordummy” som tillsvidare får leverera förutbestämda svar som api:et och webbapplikationen får hantera. Detta bygger vi i Java och Scala med Play Framework 2.0

Personsök – den första vertikalen i sökprojektet

Vi har valt att bygga en av de sedan tidigare uttalade “feature sök”-vertikalerna, personsök, för att gå hela vägen från att en besökare ställer en fråga i ett sökformulär tills att svaret kommer tillbaka och alla steg där emellan. (se bild ovan) Detta så att vi tidigt vet vad som krävs för att bygga liknande feature sök framöver.

Vi börjar med personsök eftersom datakällan är tydligt definierad, vi ansvarar för förvaltningen av den applikationen och kan därmed metadataberika den så att vi enklare kan få in rätt data till indexet. För att beskriva personobjekt har vi valt att använda rdf-standarden foaf .

Det var allt för nu. To be continued…

Kommentera

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

Följande HTML-taggar och attribut är tillåtna: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Current day month ye@r *