Dagen@ifiHvordan fungerer en søkemotor  … og hvorfor lager vi det ikke selv?          Helge Jenssen, søkearkitekt FINN.no
SøkemotorDokumentbasert indeks av data fra ulike kilderEgenskaper:• Fritekst• Relevans• Fasetter• Dokumenter• Indeks - den...
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   –...
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å...
Eksempel på felttype med analysekonfigurasjonAnalyse vedindekseringAnalyse vedsøk
Eksempler på analyse• CharFilterFactories (normalisere aksent-er og umlaut-er)   – é  e, ö  o, å  a• WhitespaceTokenize...
Eksempel på stemmer (NorwegianMinimalStemmer)                               husene-> hus                                 h...
Indexing - en invertert indexDokumenter                            Dokumentene er indeksertId    Innhold                  ...
Skriver segment til disk• Eget (binært) format
Søk
Søk                                                                Indeks• Analyse                                        ...
Relevans• Relevans er et tall som beskriver hvor godt  dokumentet passer søket• Relvans er satt sammen av en  – Dynamisk f...
Relevans• Dynamisk rank                           • Statisk boost  – TF * IDF                                 – Viktige/be...
Dynamisk rank =Term frequency * Inverse document freqencystol  log(5/(3 + 1)) = 0,10 < sofa  log(5/(2 + 1)) = 0,22Dokume...
SearchComponents
SearchComponents• Komponenter man kan legge på i ”pipeline” for å  endre resultatsettet.• Eksempler   – FacetComponent    ...
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@ifiHvordan fungerer en søkemotor  … og hvorfor lager vi det ikke selv?          Helge Jenssen, søkearkitekt FINN.no
Upcoming SlideShare
Loading in …5
×

Hvordan fungerer en søkemotor

637 views
548 views

Published on

Lyntale om hvordan en søkemotor typisk virker som ble holdt på dagen@ifi 2012.
Eksemplene er fra solr og FINN.no

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
637
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Hvordan fungerer en søkemotor

  1. 1. Dagen@ifiHvordan fungerer en søkemotor … og hvorfor lager vi det ikke selv? Helge Jenssen, søkearkitekt FINN.no
  2. 2. SøkemotorDokumentbasert indeks av data fra ulike kilderEgenskaper:• Fritekst• Relevans• Fasetter• Dokumenter• Indeks - denormalisert / uten relasjoner
  3. 3. Søkemotor – Apache Solr Indeksering Søk
  4. 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
  5. 5. Eksempel på dokument
  6. 6. UpdateRequestHandler
  7. 7. UpdateRequestHandler• Input stream -> Tekst/innhold
  8. 8. UpdateChain
  9. 9. UpdateChain• Prosessering pr dokument • Endre basert på flere felter • Legge til felt 0316 Oslo
  10. 10. Analysis
  11. 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. 12. Eksempel på felttype med analysekonfigurasjonAnalyse vedindekseringAnalyse vedsøk
  13. 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. 14. Eksempel på stemmer (NorwegianMinimalStemmer) husene-> hus huset -> hus husa-> hus
  15. 15. Indexing - en invertert indexDokumenter Dokumentene er indeksertId Innhold Term Document1 To stoler til salgs i Oslo til 1, 2, 32 Sofa til salgs salg 1, 2, 3 stol 1, 2, 43 Antikk stol til salgs sofa 2, 54 Et bord og fire stoler kjøpes i 15 Sofa oslo 1 to 1 antikk 3 fire 4 kjøpe 4
  16. 16. Skriver segment til disk• Eget (binært) format
  17. 17. Søk
  18. 18. Søk Indeks• Analyse Tittel – Samme som ved indeksering [to, stol,• Query til, salg, i, oslo] – Filtrerer og brukes for å regne ut relevansQuery Query LowerCase Query Query Stemming Tokeinzer ”Stol [Stol, [stol, [stol, Oslo” Oslo] oslo] oslo]
  19. 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. 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. 21. Dynamisk rank =Term frequency * Inverse document freqencystol  log(5/(3 + 1)) = 0,10 < sofa  log(5/(2 + 1)) = 0,22Dokumenter Dokumentene er indeksertId Innhold Term Document IDF1 To stoler til salgs i Oslo til 1, 2, 3 3/52 Sofa til salgs salg 1, 2, 3 3/5 stol 1, 2, 4 3/53 Antikk stol til salgs sofa 2, 5 2/54 Et bord og fire stoler kjøpes i 1 1/55 Sofa oslo 1 1/5 to 1 1/5 antikk 3 1/5 fire 4 1/5 kjøpe 4 1/5
  22. 22. SearchComponents
  23. 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. 24. Fasetter• Dele opp søkeresultat i katergorier med antall i hver kategori
  25. 25. Highlight
  26. 26. ResponseWriter
  27. 27. ResponseWriter• Bestemmer format på responsen• Eksempler – Xml (default) – Json – CSV – Ruby
  28. 28. Dagen@ifiHvordan fungerer en søkemotor … og hvorfor lager vi det ikke selv? Helge Jenssen, søkearkitekt FINN.no

×