apache solr i finn.no

15
Apache Solr i FINN.no Helge Jenssen Søkearkitekt FINN.no

Upload: finnno

Post on 26-May-2015

862 views

Category:

Technology


7 download

DESCRIPTION

Gjennomgang av hvordan vi bruker Apache Solr til rubrikksøk i FINN.no. Lyntale for Baksia på Commuinties in Action 2012

TRANSCRIPT

Page 1: Apache solr i finn.no

Apache Solr i FINN.noHelge JenssenSøkearkitekt FINN.no

Page 2: Apache solr i finn.no

FINN.no har brukt ulike søketeknologier

Sybase (Verity)

Fast 4 (FDS)

Fast 5 (ESP)

Apache Solr

2003 2004 2005 2006 2007 2008 2009 2010 2011 2012

Sesam/oppdrag Rubrikk

Page 3: Apache solr i finn.no

FAST ble kjøpt av Microsoft og meldte i februar 2010 at de sluttet utvikling på Linux og UNIX

Vi måtte da vurdere om vi skulle bytte til FAST på windows-server eller bytte til en annen teknologi

”With our 2010 products scheduled for release in a few months, we’ve just started to plan for our next wave of products. As a part of that planning process, we have decided that in order to deliver more innovation per release in the future, the 2010 products will be the last to include a search core that runs on Linux and UNIX.”

Bjørn OlstadCTO, FASTDistinguished Engineer, Microsoft

http://blogs.msdn.com/b/enterprisesearch/archive/2010/02/04/innovation-on-linux-and-unix.aspx

Page 4: Apache solr i finn.no

I et utviklingsmiljø med sterk javakompetanse er Solr et bedre valg for vårt søketeknologibehov

FAST SOLR

Windows plattform + Linux

Proprietær + Open Source

Lisens (pr søk evt. cpu) + Gratis

1 indeks pr maskin/cluster + Flere indekser pr maskin/cluster

Konsulentbasert + Communitybasert

Problem løses av FAST + Problem løses ved å lese kode

Skrevet i mange språk + Skrevet i Java

Dokumentert + Eksempler

”Black Box” + Åpen

Ordbokbasert støtte for norsk språk Tredjepartsverktøy med norsk ordbok (ISPELL)

SBC for søkeordstatistikk + Ingen egen løsning for søkeordstatistikk

SBC for vedlikehold av synonymer + Ingen egen løsning for vedlikehold av synonymer

Tilbyr Java - API Tilbyr Java – API

Funksjonalitet bestemt ved indeksering Funksjonalitet bestemt ved søk

Eksperimentering og spesialiserte løsninger

Vi har erfaring med Linux

Enklere (billigere) å løse problemer

Mulig å skjønne funksjonalitet

Mulig med endret oppførsel uten reindeksering

Page 5: Apache solr i finn.no
Page 6: Apache solr i finn.no

Apache Solr In A Nutshell

• Open source enterprise search platform

• Apache Lucene Index• Index/Query over HTTP• HTML administration interface

• Scalability– Horizontal (replikering)– Vertical (sharding)

• Plugin architecture

• Configurable caching• XML Configuration

– Request Handlers– Response Writers– Data Schema

• Application Server• Index (multicore) – solrconfig.xml• Document – schema.xml

– Fields – (explicit & dynamic)

– FieldTypes – schema.xm

– Analyzers• CharFilterFactories

– PatternReplaceCharFilterFactory / HTMLStripCharFilterFactory

• Tokenizers– WhitespaceTokenizerFactory /

PatternTokenizerFactory• TokenFilters

– WordDelimiterFilterFactory / LowerCaseFilterFactory / SynonymFilterFactory

Page 7: Apache solr i finn.no

Hvordan bruker vi Apache Solr i FINN.no?

Page 8: Apache solr i finn.no

take()

Indeksering med egen javaklient

Solr IndexDatabase

ContentPushClient

put(adId)

BlockingQueue

DocumentConsumer

DocumentConsumer

DocumentConsumerDocumentConsumer

DocumentGenerator

Indexer

GenerateDocument

IndexA

d

add()

Get ads ready

to be indexed

Changead

ProcessorProcessorProcessorProcessor

Page 9: Apache solr i finn.no

Index oppsett i FINN.no

• En eller flere instanser for hvert marked– En eller flere index’er

(multicore) pr instans

• Logging med log4j– QueryLog– Applikasjonslog

• Egen schema.xml og solrconfig.xml for hver indeks

• Felles felttyper

• Solrconfig.xml– Konfigurasjon av solr– Requesthandler– Replikering

• Synonymer– Egne synonym filer for

hver index.– Flere synonym filer

med forskjellig bruk– Multi-ord synonymer

ved indeksering

Page 10: Apache solr i finn.no

I tillegg til Junit på koden har vi integrasjonstester på konfigurasjonen

• Tester den individuelle Solr-konfigurasjon for hver index

• mvn verify -Pintegration-test– Kjører opp en lokal indeks med jetty plugin (mvn

jetty:run-war)– Indekserer ”dummy”-dokumenter med kjent innhold– Søker med query-string og forventer treff

• Kan teste – At fritekst-søk gir forventet resultat– At ranking (qf) gir forventet resultat

Page 11: Apache solr i finn.no

Endringer ved overgang fra Fast til solr

Søk i FINN.no mot Solr bruker Apache Tiles, Spring MVC og SolrJ

SolrIndex

ApacheTiles

Spring MVCController

SearchCommand

SearchService

Request

Search

Search

Search

QueryResponse

Response

SearchServiceResult

SearchResult

SearchDisplayConfig SearchService.

buildSearchRequest()QueryPolicy.

CreateQuery()

Transformer.transform()

SearchResult ResponseHandler.transform()

Page 12: Apache solr i finn.no

Nettverkstopologi - 1 master + 4 slaver

Page 13: Apache solr i finn.no

Erfaringer med Apache Solr

Dette er vi misfornøyd med

• Lucene Hunspell lemmatiserer i overkant mye

• Encoding; & er vanskelig å få kontroll på

• Synonymer, multi-ord synonymer

Dette er vi fornøyd med

• Ytelse• Indivduelle indekser• 1 prosess, war-fil, med

separat solr-konfig, som kjøres som webapp i Tomcat

• Skrevet i Java

Page 14: Apache solr i finn.no

Erfaringene i henhold til forventninger, men kanskje undervurderte vi ordbok og synonym utfordringene

FAST SOLR

Windows plattform + Linux

Proprietær + Open Source

Lisens (pr søk evt. cpu) + Gratis

1 indeks pr maskin/cluster + Flere indekser pr maskin/cluster

Konsulentbasert + Communitybasert

Problem løses av FAST + Problem løses ved å lese kode

Skrevet i mange språk + Skrevet i Java

Dokumentert + Eksempler

”Black Box” + Åpen

Ordbokbasert støtte for norsk språk Tredjepartsverktøy med norsk ordbok (ISPELL)

SBC for søkeordstatistikk + Ingen egen løsning for søkeordstatistikk

SBC for vedlikehold av synonymer + Ingen egen løsning for vedlikehold av synonymer

Tilbyr Java - API Tilbyr Java – API

Funksjonalitet bestemt ved indeksering Funksjonalitet bestemt ved søk

Egne indekser og konfigurasjoner for egne behov

Lett å drifte (webapp i tomcat)

Enklere (billigere) å løse problemer

Ikke veldig mange gode eksempler

Ikke mye brukt enda

Orbok og synonymer var en større utfordring enn forventet

I tillegg var ytelsen bedre enn forventet

Page 15: Apache solr i finn.no

Apache Solr i FINN.noHelge JenssenSøkearkitekt FINN.no