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

Hvordan fungerer en søkemotor

Jun 23, 2015

Download

Technology

FINN.no

Lyntale om hvordan en søkemotor typisk virker som ble holdt på dagen@ifi 2012.
Eksemplene er fra solr og FINN.no
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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