28
Dagen@ifi Hvordan fungerer en søkemotor … og hvorfor lager vi det ikke selv? Helge Jenssen, søkearkitekt FINN.no

Hvordan fungerer en søkemotor

  • Upload
    finnno

  • View
    409

  • Download
    2

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Hvordan fungerer en søkemotor

Dagen@ifi

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

Helge Jenssen, søkearkitekt FINN.no

Page 2: Hvordan fungerer en søkemotor

SøkemotorDokumentbasert indeks av data fra ulike kilder

Egenskaper:• Fritekst• Relevans• Fasetter• Dokumenter• Indeks - denormalisert / uten relasjoner

Page 3: Hvordan fungerer en søkemotor

Søkemotor – Apache SolrIndeksering Søk

Page 4: Hvordan fungerer en søkemotor

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

Page 5: Hvordan fungerer en søkemotor

Eksempel på dokument

Page 6: Hvordan fungerer en søkemotor

UpdateRequestHandler

Page 7: Hvordan fungerer en søkemotor

UpdateRequestHandler

• Input stream -> Tekst/innhold

Page 8: Hvordan fungerer en søkemotor

UpdateChain

Page 9: Hvordan fungerer en søkemotor

UpdateChain

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

0316 Oslo

Page 10: Hvordan fungerer en søkemotor

Analysis

Page 11: Hvordan fungerer en søkemotor

Analyse ved indeksering

• Analyse kjøres pr felt• Felttype definerer liste med analyse-steg

• Kan overstyres på feltnivå

Tokeinzer

”To stoler til salgs i Oslo”

Tittel

[To, stoler, til, salgs, i, Oslo]

Tittel

LowerC

ase

[to, stoler, til, salgs, i,

oslo]

Tittel

Stem

ming

[to, stol, til, salg, i, oslo]

Tittel

Page 12: Hvordan fungerer en søkemotor

Eksempel på felttype med analysekonfigurasjonA

na

lyse

ve

d

ind

eks

erin

gA

na

lyse

ve

d

søk

Page 13: Hvordan fungerer en søkemotor

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

Page 14: Hvordan fungerer en søkemotor

Eksempel på stemmer (NorwegianMinimalStemmer)

husa-> hus

husene-> hus

huset -> hus

Page 15: Hvordan fungerer en søkemotor

Indexing - en invertert index

Dokumenter Dokumentene er indeksertId Innhold

1 To stoler til salgs i Oslo

2 Sofa til salgs

3 Antikk stol til salgs

4 Et bord og fire stoler kjøpes

5 Sofa

Term Document

til 1, 2, 3

salg 1, 2, 3

stol 1, 2, 4

sofa 2, 5

i 1

oslo 1

to 1

antikk 3

fire 4

kjøpe 4

Page 16: Hvordan fungerer en søkemotor

Skriver segment til disk

• Eget (binært) format

Page 17: Hvordan fungerer en søkemotor

Søk

Page 18: Hvordan fungerer en søkemotor

Søk

• Analyse– Samme som ved indeksering

• Query– Filtrerer og brukes for å regne ut

relevans

[to, stol, til, salg, i, oslo]

Tittel

Indeks

Tokeinzer

”Stol Oslo”

Query

[Stol, Oslo]

QueryLow

erCase

[stol, oslo]

Query

Stem

ming

[stol, oslo]

Query

Page 19: Hvordan fungerer en søkemotor

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

Page 20: Hvordan fungerer en søkemotor

Relevans

• Statisk boost– Viktige/bedre dokument kan

rankes høyere uavhengig av hva man søker på

• Function queries– Boost på dato i forhold til

dagens dato (freshness)– Boost på avstand fra et

punkt (geodistance)

• Dynamisk rank – TF * IDF

• Term frequency (TF)sqrt(freq)

• Inverse Document Frequency (IDF)log(numDocs/(freq +1))

– Position• Hvor tidlig i feltet det står

”sofa selges” > ”selger sofa”

– QueryNorm• Hvor stor andel av feltet

”sofa” > ”sofa til salgs”

Page 21: Hvordan fungerer en søkemotor

Dynamisk rank = Term frequency * Inverse document freqency

Dokumenter Dokumentene er indeksert

stol log(5/(3 + 1)) = 0,10 < sofa log(5/(2 + 1)) = 0,22

Id Innhold

1 To stoler til salgs i Oslo

2 Sofa til salgs

3 Antikk stol til salgs

4 Et bord og fire stoler kjøpes

5 Sofa

Term Document IDF

til 1, 2, 3 3/5

salg 1, 2, 3 3/5

stol 1, 2, 4 3/5

sofa 2, 5 2/5

i 1 1/5

oslo 1 1/5

to 1 1/5

antikk 3 1/5

fire 4 1/5

kjøpe 4 1/5

Page 22: Hvordan fungerer en søkemotor

SearchComponents

Page 23: Hvordan fungerer en søkemotor

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

Page 24: Hvordan fungerer en søkemotor

Fasetter

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

Page 25: Hvordan fungerer en søkemotor

Highlight

Page 26: Hvordan fungerer en søkemotor

ResponseWriter

Page 27: Hvordan fungerer en søkemotor

ResponseWriter

• Bestemmer format på responsen• Eksempler

– Xml (default)– Json– CSV– Ruby

Page 28: Hvordan fungerer en søkemotor

Dagen@ifi

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

Helge Jenssen, søkearkitekt FINN.no