SlideShare a Scribd company logo
1 of 28
Dagen@ifi

Hvordan fungerer en søkemotor
  … og hvorfor lager vi det ikke selv?


          Helge Jenssen, søkearkitekt FINN.no
Søkemotor
Dokumentbasert indeks av data fra ulike kilder

Egenskaper:
• Fritekst
• Relevans
• Fasetter
• Dokumenter
• Indeks - denormalisert / uten relasjoner
Søkemotor – Apache Solr
          Indeksering   Søk
Struktur

• Dokument er enheten som blir lagret i indeksen
• Dokument består av felter
• Felter har sin egen konfigurasjon
   – Type – Hvilken type feltet er (int, string, egne typer)
   – Stored – Om innholdet kan returneres (true|false)
   – Indexed – Om innholdet kan søkes/filtreres/sorteres på
     (true|false)
   – Multivalue – Om det er lov med flere verdier (true|false)
   – Analyse – Hvordan innholdet skal håndteres ved
     indeksering og søk
Eksempel på dokument
UpdateRequestHandler
UpdateRequestHandler

• Input stream -> Tekst/innhold
UpdateChain
UpdateChain

• Prosessering pr dokument
  • Endre basert på flere felter
  • Legge til felt




              0316 Oslo
Analysis
Analyse ved indeksering

• Analyse kjøres pr felt
• Felttype definerer liste med analyse-steg
    • Kan overstyres på feltnivå

 Tittel                    Tittel                     Tittel                   Tittel



                                        LowerCase
  ”To




                                                                   Stemming
                            [To,                       [to,
             Tokeinzer




                                                                              [to, stol,
stoler til               stoler, til,               stoler, til,
                                                                              til, salg,
 salgs i                  salgs, i,                  salgs, i,
                                                                               i, oslo]
 Oslo”                     Oslo]                      oslo]
Eksempel på felttype med analysekonfigurasjon
Analyse ved
indeksering
Analyse ved
søk
Eksempler på analyse
• CharFilterFactories (normalisere aksent-er og umlaut-er)
   – é  e, ö  o, å  a
• WhitespaceTokenizer - dele opp i ord/tokens
   – Dette er en test  Dette, er, en, test
• Pr token
   – Lowercase
       • Dette  dette
   – Synonym
       • Sovesofa  sofa
   – Stoppord
       • Fjerner ord uten mening
   – Ordsplitting
       • Tex-Mex|TexMex Tex Mex
   – Stemming/lemmatisering
       • Gule  gul, biler  bil
Eksempel på stemmer (NorwegianMinimalStemmer)



                               husene-> hus




                                 huset -> hus




                  husa-> hus
Indexing - en invertert index
Dokumenter                            Dokumentene er indeksert
Id    Innhold                         Term     Document

1     To stoler til salgs i Oslo      til      1, 2, 3

2     Sofa til salgs                  salg     1, 2, 3
                                      stol     1, 2, 4
3     Antikk stol til salgs
                                      sofa     2, 5
4     Et bord og fire stoler kjøpes
                                      i        1
5     Sofa
                                      oslo     1
                                      to       1
                                      antikk   3
                                      fire     4
                                      kjøpe    4
Skriver segment til disk

• Eget (binært) format
Søk
Søk
                                                                Indeks
• Analyse                                                        Tittel
   – Samme som ved indeksering
                                                                [to, stol,
• Query                                                         til, salg,
                                                                 i, oslo]
   – Filtrerer og brukes for å regne ut
     relevans


Query                  Query    LowerCase   Query                      Query




                                                     Stemming
           Tokeinzer




 ”Stol                 [Stol,               [stol,                        [stol,
 Oslo”                 Oslo]                oslo]                         oslo]
Relevans

• Relevans er et tall som beskriver hvor godt
  dokumentet passer søket
• Relvans er satt sammen av en
  – Dynamisk faktor
  – Statisk faktor
  – Rankbidrag basert på funksjoner
Relevans

• Dynamisk rank                           • Statisk boost
  – TF * IDF                                 – Viktige/bedre dokument kan
     • Term frequency (TF)                     rankes høyere uavhengig av
       sqrt(freq)                              hva man søker på
     • Inverse Document Frequency (IDF)   • Function queries
       log(numDocs/(freq +1))
                                             – Boost på dato i forhold til
  – Position                                   dagens dato (freshness)
     • Hvor tidlig i feltet det står         – Boost på avstand fra et
       ”sofa selges” > ”selger sofa”
                                               punkt (geodistance)
  – QueryNorm
     • Hvor stor andel av feltet
       ”sofa” > ”sofa til salgs”
Dynamisk rank =
Term frequency * Inverse document freqency
stol  log(5/(3 + 1)) = 0,10 < sofa  log(5/(2 + 1)) = 0,22



Dokumenter                                Dokumentene er indeksert
Id        Innhold                         Term     Document    IDF
1         To stoler til salgs i Oslo      til      1, 2, 3     3/5
2         Sofa til salgs                  salg     1, 2, 3     3/5
                                          stol     1, 2, 4     3/5
3         Antikk stol til salgs
                                          sofa     2, 5        2/5
4         Et bord og fire stoler kjøpes
                                          i        1           1/5
5         Sofa
                                          oslo     1           1/5
                                          to       1           1/5
                                          antikk   3           1/5
                                          fire     4           1/5
                                          kjøpe    4           1/5
SearchComponents
SearchComponents
• Komponenter man kan legge på i ”pipeline” for å
  endre resultatsettet.
• Eksempler
   – FacetComponent
      • Dele opp søkeresultat i katergorier med antall i hver kategori
   – MoreLikeThis
      • Finne andre som ligner
   – Highlighting
      • Markere søkeordtreff i resultatet
   – StatsComponent
      • Regne ut statistikker for resultatsettet
   – QueryElevationComponent
      • ”heve” resultater i resultatsettet basert på regler og ikke
        relevans
Fasetter

• Dele opp søkeresultat i katergorier med antall i
  hver kategori
Highlight
ResponseWriter
ResponseWriter

• Bestemmer format på responsen
• Eksempler
  –   Xml (default)
  –   Json
  –   CSV
  –   Ruby
Dagen@ifi

Hvordan fungerer en søkemotor
  … og hvorfor lager vi det ikke selv?


          Helge Jenssen, søkearkitekt FINN.no

More Related Content

Viewers also liked

Pensamiento logico 1 escaner
Pensamiento logico 1 escanerPensamiento logico 1 escaner
Pensamiento logico 1 escaneraamayac01
 
Cyber security foss-foruniversities-haiphong-15042012
Cyber security foss-foruniversities-haiphong-15042012Cyber security foss-foruniversities-haiphong-15042012
Cyber security foss-foruniversities-haiphong-15042012nghia le trung
 
Pemanfaatan ekstrak serai(sitronela) sebagai pengusir nyamuk
Pemanfaatan ekstrak serai(sitronela) sebagai pengusir nyamukPemanfaatan ekstrak serai(sitronela) sebagai pengusir nyamuk
Pemanfaatan ekstrak serai(sitronela) sebagai pengusir nyamukMuhammad Syahida
 
Ehr034 instalações prediais hidráulico -sanitário
Ehr034   instalações prediais hidráulico -sanitárioEhr034   instalações prediais hidráulico -sanitário
Ehr034 instalações prediais hidráulico -sanitárioEulalia Cristina
 
แนะนำการเช็คสายงาน md9999.net
แนะนำการเช็คสายงาน md9999.netแนะนำการเช็คสายงาน md9999.net
แนะนำการเช็คสายงาน md9999.netRpg Thailand
 
Science the bold words
Science the bold wordsScience the bold words
Science the bold wordsroyalebabyphat
 
Bygy - Finno-Ugric Capital of Culture 2014 @ UN Geneva
Bygy - Finno-Ugric Capital of Culture 2014 @ UN GenevaBygy - Finno-Ugric Capital of Culture 2014 @ UN Geneva
Bygy - Finno-Ugric Capital of Culture 2014 @ UN GenevaOliver Loode
 
DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk
DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk
DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk DTC Lab
 
Obinitsa- Finno-Ugric Capital of Culture 2015 @ UN in Geneva
Obinitsa- Finno-Ugric Capital of Culture 2015 @ UN in GenevaObinitsa- Finno-Ugric Capital of Culture 2015 @ UN in Geneva
Obinitsa- Finno-Ugric Capital of Culture 2015 @ UN in GenevaOliver Loode
 
Session 5 - 21st Century Consumer
Session 5 - 21st Century ConsumerSession 5 - 21st Century Consumer
Session 5 - 21st Century ConsumerThe Digital Insurer
 
Ho w to get your dream job – the
Ho w to get your dream job – theHo w to get your dream job – the
Ho w to get your dream job – theEmmanuel Kumah
 
nguyen ly co ban cua may dien
nguyen ly co ban cua may diennguyen ly co ban cua may dien
nguyen ly co ban cua may dienTiến Trung Cao
 
Pdhpe powerpoint
Pdhpe powerpointPdhpe powerpoint
Pdhpe powerpointmelisa_d
 

Viewers also liked (18)

Pensamiento logico 1 escaner
Pensamiento logico 1 escanerPensamiento logico 1 escaner
Pensamiento logico 1 escaner
 
Cyber security foss-foruniversities-haiphong-15042012
Cyber security foss-foruniversities-haiphong-15042012Cyber security foss-foruniversities-haiphong-15042012
Cyber security foss-foruniversities-haiphong-15042012
 
Pemanfaatan ekstrak serai(sitronela) sebagai pengusir nyamuk
Pemanfaatan ekstrak serai(sitronela) sebagai pengusir nyamukPemanfaatan ekstrak serai(sitronela) sebagai pengusir nyamuk
Pemanfaatan ekstrak serai(sitronela) sebagai pengusir nyamuk
 
Ehr034 instalações prediais hidráulico -sanitário
Ehr034   instalações prediais hidráulico -sanitárioEhr034   instalações prediais hidráulico -sanitário
Ehr034 instalações prediais hidráulico -sanitário
 
แนะนำการเช็คสายงาน md9999.net
แนะนำการเช็คสายงาน md9999.netแนะนำการเช็คสายงาน md9999.net
แนะนำการเช็คสายงาน md9999.net
 
Science the bold words
Science the bold wordsScience the bold words
Science the bold words
 
Bygy - Finno-Ugric Capital of Culture 2014 @ UN Geneva
Bygy - Finno-Ugric Capital of Culture 2014 @ UN GenevaBygy - Finno-Ugric Capital of Culture 2014 @ UN Geneva
Bygy - Finno-Ugric Capital of Culture 2014 @ UN Geneva
 
DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk
DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk
DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk
 
Obinitsa- Finno-Ugric Capital of Culture 2015 @ UN in Geneva
Obinitsa- Finno-Ugric Capital of Culture 2015 @ UN in GenevaObinitsa- Finno-Ugric Capital of Culture 2015 @ UN in Geneva
Obinitsa- Finno-Ugric Capital of Culture 2015 @ UN in Geneva
 
Session 5 - 21st Century Consumer
Session 5 - 21st Century ConsumerSession 5 - 21st Century Consumer
Session 5 - 21st Century Consumer
 
Las
LasLas
Las
 
Ho w to get your dream job – the
Ho w to get your dream job – theHo w to get your dream job – the
Ho w to get your dream job – the
 
Teste Matemática Probabilidades
Teste Matemática ProbabilidadesTeste Matemática Probabilidades
Teste Matemática Probabilidades
 
nguyen ly co ban cua may dien
nguyen ly co ban cua may diennguyen ly co ban cua may dien
nguyen ly co ban cua may dien
 
FailSafe IaaS
FailSafe IaaSFailSafe IaaS
FailSafe IaaS
 
Pdhpe powerpoint
Pdhpe powerpointPdhpe powerpoint
Pdhpe powerpoint
 
Design av web
Design av webDesign av web
Design av web
 
Know your city
Know your cityKnow your city
Know your city
 

More from FINN.no

OOCSS e ælsk
OOCSS e ælskOOCSS e ælsk
OOCSS e ælskFINN.no
 
Slutt å snakk, begynn å jobb - om FINNovasjonsdagen
Slutt å snakk, begynn å jobb - om FINNovasjonsdagenSlutt å snakk, begynn å jobb - om FINNovasjonsdagen
Slutt å snakk, begynn å jobb - om FINNovasjonsdagenFINN.no
 
Apache solr i finn.no
Apache solr i finn.noApache solr i finn.no
Apache solr i finn.noFINN.no
 
Slutte å snakke og begynn å jobbe
Slutte å snakke og begynn å jobbeSlutte å snakke og begynn å jobbe
Slutte å snakke og begynn å jobbeFINN.no
 
Mobile web-debug
Mobile web-debugMobile web-debug
Mobile web-debugFINN.no
 
Nå begynner moroa software2011
Nå begynner moroa software2011Nå begynner moroa software2011
Nå begynner moroa software2011FINN.no
 
20111011 Geek Girls - Innovation
20111011 Geek Girls - Innovation20111011 Geek Girls - Innovation
20111011 Geek Girls - InnovationFINN.no
 
Du vil vel ikke mamma noe vondt?
Du vil vel ikke mamma noe vondt?Du vil vel ikke mamma noe vondt?
Du vil vel ikke mamma noe vondt?FINN.no
 

More from FINN.no (8)

OOCSS e ælsk
OOCSS e ælskOOCSS e ælsk
OOCSS e ælsk
 
Slutt å snakk, begynn å jobb - om FINNovasjonsdagen
Slutt å snakk, begynn å jobb - om FINNovasjonsdagenSlutt å snakk, begynn å jobb - om FINNovasjonsdagen
Slutt å snakk, begynn å jobb - om FINNovasjonsdagen
 
Apache solr i finn.no
Apache solr i finn.noApache solr i finn.no
Apache solr i finn.no
 
Slutte å snakke og begynn å jobbe
Slutte å snakke og begynn å jobbeSlutte å snakke og begynn å jobbe
Slutte å snakke og begynn å jobbe
 
Mobile web-debug
Mobile web-debugMobile web-debug
Mobile web-debug
 
Nå begynner moroa software2011
Nå begynner moroa software2011Nå begynner moroa software2011
Nå begynner moroa software2011
 
20111011 Geek Girls - Innovation
20111011 Geek Girls - Innovation20111011 Geek Girls - Innovation
20111011 Geek Girls - Innovation
 
Du vil vel ikke mamma noe vondt?
Du vil vel ikke mamma noe vondt?Du vil vel ikke mamma noe vondt?
Du vil vel ikke mamma noe vondt?
 

Hvordan fungerer en søkemotor

  • 1. Dagen@ifi Hvordan fungerer en søkemotor … og hvorfor lager vi det ikke selv? Helge Jenssen, søkearkitekt FINN.no
  • 2. Søkemotor Dokumentbasert indeks av data fra ulike kilder Egenskaper: • Fritekst • Relevans • Fasetter • Dokumenter • Indeks - denormalisert / uten relasjoner
  • 3. Søkemotor – Apache Solr Indeksering Søk
  • 4. Struktur • Dokument er enheten som blir lagret i indeksen • Dokument består av felter • Felter har sin egen konfigurasjon – Type – Hvilken type feltet er (int, string, egne typer) – Stored – Om innholdet kan returneres (true|false) – Indexed – Om innholdet kan søkes/filtreres/sorteres på (true|false) – Multivalue – Om det er lov med flere verdier (true|false) – Analyse – Hvordan innholdet skal håndteres ved indeksering og søk
  • 9. UpdateChain • Prosessering pr dokument • Endre basert på flere felter • Legge til felt 0316 Oslo
  • 11. Analyse ved indeksering • Analyse kjøres pr felt • Felttype definerer liste med analyse-steg • Kan overstyres på feltnivå Tittel Tittel Tittel Tittel LowerCase ”To Stemming [To, [to, Tokeinzer [to, stol, stoler til stoler, til, stoler, til, til, salg, salgs i salgs, i, salgs, i, i, oslo] Oslo” Oslo] oslo]
  • 12. Eksempel på felttype med analysekonfigurasjon Analyse ved indeksering Analyse ved søk
  • 13. Eksempler på analyse • CharFilterFactories (normalisere aksent-er og umlaut-er) – é  e, ö  o, å  a • WhitespaceTokenizer - dele opp i ord/tokens – Dette er en test  Dette, er, en, test • Pr token – Lowercase • Dette  dette – Synonym • Sovesofa  sofa – Stoppord • Fjerner ord uten mening – Ordsplitting • Tex-Mex|TexMex Tex Mex – Stemming/lemmatisering • Gule  gul, biler  bil
  • 14. Eksempel på stemmer (NorwegianMinimalStemmer) husene-> hus huset -> hus husa-> hus
  • 15. Indexing - en invertert index Dokumenter Dokumentene er indeksert Id Innhold Term Document 1 To stoler til salgs i Oslo til 1, 2, 3 2 Sofa til salgs salg 1, 2, 3 stol 1, 2, 4 3 Antikk stol til salgs sofa 2, 5 4 Et bord og fire stoler kjøpes i 1 5 Sofa oslo 1 to 1 antikk 3 fire 4 kjøpe 4
  • 16. Skriver segment til disk • Eget (binært) format
  • 17. Søk
  • 18. Søk Indeks • Analyse Tittel – Samme som ved indeksering [to, stol, • Query til, salg, i, oslo] – Filtrerer og brukes for å regne ut relevans Query Query LowerCase Query Query Stemming Tokeinzer ”Stol [Stol, [stol, [stol, Oslo” Oslo] oslo] oslo]
  • 19. Relevans • Relevans er et tall som beskriver hvor godt dokumentet passer søket • Relvans er satt sammen av en – Dynamisk faktor – Statisk faktor – Rankbidrag basert på funksjoner
  • 20. Relevans • Dynamisk rank • Statisk boost – TF * IDF – Viktige/bedre dokument kan • Term frequency (TF) rankes høyere uavhengig av sqrt(freq) hva man søker på • Inverse Document Frequency (IDF) • Function queries log(numDocs/(freq +1)) – Boost på dato i forhold til – Position dagens dato (freshness) • Hvor tidlig i feltet det står – Boost på avstand fra et ”sofa selges” > ”selger sofa” punkt (geodistance) – QueryNorm • Hvor stor andel av feltet ”sofa” > ”sofa til salgs”
  • 21. Dynamisk rank = Term frequency * Inverse document freqency stol  log(5/(3 + 1)) = 0,10 < sofa  log(5/(2 + 1)) = 0,22 Dokumenter Dokumentene er indeksert Id Innhold Term Document IDF 1 To stoler til salgs i Oslo til 1, 2, 3 3/5 2 Sofa til salgs salg 1, 2, 3 3/5 stol 1, 2, 4 3/5 3 Antikk stol til salgs sofa 2, 5 2/5 4 Et bord og fire stoler kjøpes i 1 1/5 5 Sofa oslo 1 1/5 to 1 1/5 antikk 3 1/5 fire 4 1/5 kjøpe 4 1/5
  • 23. SearchComponents • Komponenter man kan legge på i ”pipeline” for å endre resultatsettet. • Eksempler – FacetComponent • Dele opp søkeresultat i katergorier med antall i hver kategori – MoreLikeThis • Finne andre som ligner – Highlighting • Markere søkeordtreff i resultatet – StatsComponent • Regne ut statistikker for resultatsettet – QueryElevationComponent • ”heve” resultater i resultatsettet basert på regler og ikke relevans
  • 24. Fasetter • Dele opp søkeresultat i katergorier med antall i hver kategori
  • 27. ResponseWriter • Bestemmer format på responsen • Eksempler – Xml (default) – Json – CSV – Ruby
  • 28. Dagen@ifi Hvordan fungerer en søkemotor … og hvorfor lager vi det ikke selv? Helge Jenssen, søkearkitekt FINN.no