SlideShare a Scribd company logo
1 of 15
Apache Solr i FINN.no
Helge Jenssen
Søkearkitekt FINN.no
FINN.no har brukt ulike søketeknologier


              Sybase (Verity)


                       Fast 4
                       (FDS)


                                          Fast 5 (ESP)


                                                         Apache Solr
                                                Sesam/oppdrag       Rubrikk


2003   2004   2005   2006   2007   2008      2009   2010     2011    2012
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 Olstad
CTO, FAST
Distinguished Engineer, Microsoft



       http://blogs.msdn.com/b/enterprisesearch/archive/2010/02/04/innovation-on-linux-and-unix.aspx
I et utviklingsmiljø med sterk javakompetanse er
Solr et bedre valg for vårt søketeknologibehov
                     FAST                                            SOLR
                                                                                     Vi har erfaring med
Windows plattform                            +   Linux                               Linux
Proprietær                                   +   Open Source
                                                                                    Eksperimentering
Lisens (pr søk evt. cpu)                     +   Gratis                             og spesialiserte
                                                                                    løsninger
1 indeks pr maskin/cluster                   +   Flere indekser pr maskin/cluster
Konsulentbasert                              +   Communitybasert                    Enklere (billigere) å
                                                                                    løse problemer
Problem løses av FAST                        +   Problem løses ved å lese kode
Skrevet i mange språk                        +   Skrevet i Java
                                                                                     Mulig å skjønne
Dokumentert                                  +   Eksempler                           funksjonalitet

”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
                                                                                     Mulig med endret
Funksjonalitet bestemt ved indeksering           Funksjonalitet bestemt ved søk      oppførsel uten
                                                                                     reindeksering
Apache Solr In A Nutshell
•   Open source enterprise search   •   Application Server
    platform                        •   Index (multicore) – solrconfig.xml
•   Apache Lucene Index             •   Document – schema.xml
•   Index/Query over HTTP                – Fields – (explicit & dynamic)
•   HTML administration interface        – FieldTypes – schema.xm
•   Scalability                          – Analyzers
     –   Horizontal (replikering)             •   CharFilterFactories
     –   Vertical (sharding)                         – PatternReplaceCharFilterFactory /
                                                         HTMLStripCharFilterFactory
•   Plugin architecture                       •   Tokenizers
                                                     – WhitespaceTokenizerFactory /
•   Configurable caching                                 PatternTokenizerFactory
•   XML Configuration                         •   TokenFilters
                                                     – WordDelimiterFilterFactory /
     –   Request Handlers                                LowerCaseFilterFactory /
     –   Response Writers                                SynonymFilterFactory
     –   Data Schema
Hvordan bruker vi Apache Solr i FINN.no?
Indeksering med egen javaklient


                                                              Document
         Content              put(adI   Blocking             Document
                                                            Document
                                                              Consumer   Generate    Document
          Push                  d)       Queue     take()   Document
                                                             Consumer
                                                            Consumer     Document    Generator
          Client                                            Consumer
           Get ads ready to
             be indexed




                                                              Index
                                                                                       Processor
                                                                                       Processor




                                                                Ad
                                                                                      Processor
                                                                                     Processor




Change                                                      Indexer      add()      Solr Index
  ad     Database
Index oppsett i FINN.no
• En eller flere instanser     • Solrconfig.xml
  for hvert marked                – Konfigurasjon av solr
   – En eller flere index’er      – Requesthandler
     (multicore) pr instans       – Replikering
• Logging med log4j            • Synonymer
   – QueryLog                     – Egne synonym filer for
   – Applikasjonslog                hver index.
• Egen schema.xml og              – Flere synonym filer med
  solrconfig.xml for hver           forskjellig bruk
  indeks                          – Multi-ord synonymer ved
                                    indeksering
• Felles felttyper
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
Søk i FINN.no mot Solr bruker Apache Tiles,
Spring MVC og SolrJ
                                                                            Endringer ved overgang
                                                                                fra Fast til solr
      Apache             Spring MVC                Search                 Search
       Tiles              Controller              Command                 Service
                                       SearchDisplay
                                          Config           SearchService.
           Request                                                                   QueryPolicy.
                                                       buildSearchRequest()         CreateQuery()

                                        Search


                                                            Search


                                                                                    Search
                                                                                                     Solr
                                                                                QueryResponse       Index
                                                       SearchServiceResult
                                                                                    Transformer.
                                       SearchResult                                  transform()
                 SearchResult                            ResponseHandler.
                                                            transform()
Response
Nettverkstopologi - 1 master + 4 slaver
Erfaringer med Apache Solr

Dette er vi misfornøyd med   Dette er vi fornøyd med
• Lucene Hunspell            • Ytelse
  lemmatiserer i overkant    • Indivduelle indekser
  mye                        • 1 prosess, war-fil, med
• Encoding; & er vanskelig     separat solr-konfig, som
  å få kontroll på             kjøres som webapp i
• Synonymer, multi-ord         Tomcat
  synonymer                  • Skrevet i Java
Erfaringene i henhold til forventninger, men kanskje
undervurderte vi ordbok og synonym utfordringene
                     FAST                                            SOLR
                                                                                        Lett å drifte
Windows plattform                            +   Linux                                  (webapp i tomcat)
Proprietær                                   +   Open Source
                                                                                        Egne indekser og
Lisens (pr søk evt. cpu)                     +   Gratis                                 konfigurasjoner for
                                                                                        egne behov
1 indeks pr maskin/cluster                   +   Flere indekser pr maskin/cluster
Konsulentbasert                              +   Communitybasert                        Enklere (billigere) å
                                                                                        løse problemer
Problem løses av FAST                        +   Problem løses ved å lese kode
Skrevet i mange språk                        +   Skrevet i Java
                                                                                        Ikke veldig mange
Dokumentert                                  +   Eksempler                              gode eksempler

”Black Box”                                  +   Åpen
Ordbokbasert støtte for norsk språk              Tredjepartsverktøy med norsk ordbok (ISPELL)
                                                                                        Orbok og
                                                                                            synonymer var
SBC for søkeordstatistikk                +       Ingen egen løsning for   søkeordstatistikk en større
                I tillegg var ytelsen bedre for
SBC for vedlikehold av synonymer+   Ingen egen løsning
                                                                                            utfordring enn
                                                                          vedlikehold av forventet
                        enn forventet
                                    synonymer
Tilbyr Java - API                                Tilbyr Java – API
Funksjonalitet bestemt ved indeksering           Funksjonalitet bestemt ved søk        Ikke mye brukt enda
Apache Solr i FINN.no
Helge Jenssen
Søkearkitekt FINN.no

More Related Content

Viewers also liked

3 examen et corrige arabe 2014 1 am t1
3 examen et corrige arabe 2014 1 am t13 examen et corrige arabe 2014 1 am t1
3 examen et corrige arabe 2014 1 am t1
Ahmed Mesellem
 
Podstawy projektowania do Internetu „Podstawy pisania do Internetu"
Podstawy projektowania do Internetu „Podstawy pisania do Internetu"Podstawy projektowania do Internetu „Podstawy pisania do Internetu"
Podstawy projektowania do Internetu „Podstawy pisania do Internetu"
Trzecia Pracownia Wzornictwa
 
Pikachu Productions - A2 Media Pitch
Pikachu Productions - A2 Media PitchPikachu Productions - A2 Media Pitch
Pikachu Productions - A2 Media Pitch
likeitsthefirsttime
 

Viewers also liked (14)

Constitutionof india acts
Constitutionof india actsConstitutionof india acts
Constitutionof india acts
 
3 examen et corrige arabe 2014 1 am t1
3 examen et corrige arabe 2014 1 am t13 examen et corrige arabe 2014 1 am t1
3 examen et corrige arabe 2014 1 am t1
 
Foss proj-implement-sep-2016
Foss proj-implement-sep-2016Foss proj-implement-sep-2016
Foss proj-implement-sep-2016
 
Results of the XI International wine exhibition
Results of the XI International wine exhibitionResults of the XI International wine exhibition
Results of the XI International wine exhibition
 
Session 7 - Poll
Session 7 - PollSession 7 - Poll
Session 7 - Poll
 
11 compo
11 compo11 compo
11 compo
 
Podstawy projektowania do Internetu „Podstawy pisania do Internetu"
Podstawy projektowania do Internetu „Podstawy pisania do Internetu"Podstawy projektowania do Internetu „Podstawy pisania do Internetu"
Podstawy projektowania do Internetu „Podstawy pisania do Internetu"
 
Musical instruments
Musical instrumentsMusical instruments
Musical instruments
 
The Do-Gooder Industrial Complex?
The Do-Gooder Industrial Complex?The Do-Gooder Industrial Complex?
The Do-Gooder Industrial Complex?
 
Pa la gaining insight
Pa la gaining insightPa la gaining insight
Pa la gaining insight
 
Autorizacoes para levantamentos_hidrograficos_2015-1
Autorizacoes para levantamentos_hidrograficos_2015-1Autorizacoes para levantamentos_hidrograficos_2015-1
Autorizacoes para levantamentos_hidrograficos_2015-1
 
Pikachu Productions - A2 Media Pitch
Pikachu Productions - A2 Media PitchPikachu Productions - A2 Media Pitch
Pikachu Productions - A2 Media Pitch
 
Ghế rung- Ghế rung ăn bột cho bé
Ghế rung- Ghế rung ăn bột cho béGhế rung- Ghế rung ăn bột cho bé
Ghế rung- Ghế rung ăn bột cho bé
 
Cyber war some-recommends
Cyber war some-recommendsCyber war some-recommends
Cyber war some-recommends
 

Similar to Apache solr i finn.no

GoOpen 2010: Håvard Haug Hanssen
GoOpen 2010: Håvard Haug HanssenGoOpen 2010: Håvard Haug Hanssen
GoOpen 2010: Håvard Haug Hanssen
Friprogsenteret
 
Hva er fri programvare? (2011)
Hva er fri programvare? (2011)Hva er fri programvare? (2011)
Hva er fri programvare? (2011)
Libriotech
 
Formatet ingen hindring bruk av fme
Formatet ingen hindring bruk av fmeFormatet ingen hindring bruk av fme
Formatet ingen hindring bruk av fme
Geodata AS
 
20130212 firstpoint citrix seminar 12 februar
20130212 firstpoint citrix seminar 12 februar20130212 firstpoint citrix seminar 12 februar
20130212 firstpoint citrix seminar 12 februar
Sturla Grelland
 
GoOpen 2010: Jorgen Wahlberg
GoOpen 2010: Jorgen WahlbergGoOpen 2010: Jorgen Wahlberg
GoOpen 2010: Jorgen Wahlberg
Friprogsenteret
 
Presentation Mapreduce Bjornnordlund
Presentation Mapreduce BjornnordlundPresentation Mapreduce Bjornnordlund
Presentation Mapreduce Bjornnordlund
Bjørn Nordlund
 

Similar to Apache solr i finn.no (20)

GoOpen 2010: Håvard Haug Hanssen
GoOpen 2010: Håvard Haug HanssenGoOpen 2010: Håvard Haug Hanssen
GoOpen 2010: Håvard Haug Hanssen
 
Hva er fri programvare
Hva er fri programvareHva er fri programvare
Hva er fri programvare
 
Hva er fri programvare? (2011)
Hva er fri programvare? (2011)Hva er fri programvare? (2011)
Hva er fri programvare? (2011)
 
Formatet ingen hindring bruk av fme
Formatet ingen hindring bruk av fmeFormatet ingen hindring bruk av fme
Formatet ingen hindring bruk av fme
 
KristiansandPHP 2017 - Nov
KristiansandPHP 2017 - NovKristiansandPHP 2017 - Nov
KristiansandPHP 2017 - Nov
 
Frokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent asFrokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent as
 
Faktabasert søk med Recommind
Faktabasert søk med RecommindFaktabasert søk med Recommind
Faktabasert søk med Recommind
 
Dagens Næringslivs overgang til Lucene/Solr søk
Dagens Næringslivs overgang til Lucene/Solr søkDagens Næringslivs overgang til Lucene/Solr søk
Dagens Næringslivs overgang til Lucene/Solr søk
 
AWS på kartet
AWS på kartetAWS på kartet
AWS på kartet
 
Jacky 原创我用linux 实现你的梦想之rtc服务系列
Jacky 原创我用linux 实现你的梦想之rtc服务系列Jacky 原创我用linux 实现你的梦想之rtc服务系列
Jacky 原创我用linux 实现你的梦想之rtc服务系列
 
Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010
 
20130212 firstpoint citrix seminar 12 februar
20130212 firstpoint citrix seminar 12 februar20130212 firstpoint citrix seminar 12 februar
20130212 firstpoint citrix seminar 12 februar
 
Hele butikken i skyen
Hele butikken i skyenHele butikken i skyen
Hele butikken i skyen
 
GoOpen 2010: Jorgen Wahlberg
GoOpen 2010: Jorgen WahlbergGoOpen 2010: Jorgen Wahlberg
GoOpen 2010: Jorgen Wahlberg
 
Ikt Fagforum - Presentasjon Av Autentiseringsprosjektet
Ikt Fagforum - Presentasjon Av AutentiseringsprosjektetIkt Fagforum - Presentasjon Av Autentiseringsprosjektet
Ikt Fagforum - Presentasjon Av Autentiseringsprosjektet
 
Flexible, scalable self-service provisioning using Office PnP
Flexible, scalable self-service provisioning using Office PnPFlexible, scalable self-service provisioning using Office PnP
Flexible, scalable self-service provisioning using Office PnP
 
Presentation Mapreduce Bjornnordlund
Presentation Mapreduce BjornnordlundPresentation Mapreduce Bjornnordlund
Presentation Mapreduce Bjornnordlund
 
Vet du hva DNX innebærer for deg som .NET-utvikler?
Vet du hva DNX innebærer for deg som .NET-utvikler?Vet du hva DNX innebærer for deg som .NET-utvikler?
Vet du hva DNX innebærer for deg som .NET-utvikler?
 
Firefox os og web som mobil plattform
Firefox os og web som mobil plattformFirefox os og web som mobil plattform
Firefox os og web som mobil plattform
 
Firefox os og web som mobil plattform
Firefox os og web som mobil plattformFirefox os og web som mobil plattform
Firefox os og web som mobil plattform
 

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
 
Hvordan fungerer en søkemotor
Hvordan fungerer en søkemotorHvordan fungerer en søkemotor
Hvordan fungerer en søkemotor
 
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?
 

Apache solr i finn.no

  • 1. Apache Solr i FINN.no Helge Jenssen Søkearkitekt FINN.no
  • 2. FINN.no har brukt ulike søketeknologier Sybase (Verity) Fast 4 (FDS) Fast 5 (ESP) Apache Solr Sesam/oppdrag Rubrikk 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012
  • 3. 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 Olstad CTO, FAST Distinguished Engineer, Microsoft http://blogs.msdn.com/b/enterprisesearch/archive/2010/02/04/innovation-on-linux-and-unix.aspx
  • 4. I et utviklingsmiljø med sterk javakompetanse er Solr et bedre valg for vårt søketeknologibehov FAST SOLR Vi har erfaring med Windows plattform + Linux Linux Proprietær + Open Source Eksperimentering Lisens (pr søk evt. cpu) + Gratis og spesialiserte løsninger 1 indeks pr maskin/cluster + Flere indekser pr maskin/cluster Konsulentbasert + Communitybasert Enklere (billigere) å løse problemer Problem løses av FAST + Problem løses ved å lese kode Skrevet i mange språk + Skrevet i Java Mulig å skjønne Dokumentert + Eksempler funksjonalitet ”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 Mulig med endret Funksjonalitet bestemt ved indeksering Funksjonalitet bestemt ved søk oppførsel uten reindeksering
  • 5.
  • 6. Apache Solr In A Nutshell • Open source enterprise search • Application Server platform • Index (multicore) – solrconfig.xml • Apache Lucene Index • Document – schema.xml • Index/Query over HTTP – Fields – (explicit & dynamic) • HTML administration interface – FieldTypes – schema.xm • Scalability – Analyzers – Horizontal (replikering) • CharFilterFactories – Vertical (sharding) – PatternReplaceCharFilterFactory / HTMLStripCharFilterFactory • Plugin architecture • Tokenizers – WhitespaceTokenizerFactory / • Configurable caching PatternTokenizerFactory • XML Configuration • TokenFilters – WordDelimiterFilterFactory / – Request Handlers LowerCaseFilterFactory / – Response Writers SynonymFilterFactory – Data Schema
  • 7. Hvordan bruker vi Apache Solr i FINN.no?
  • 8. Indeksering med egen javaklient Document Content put(adI Blocking Document Document Consumer Generate Document Push d) Queue take() Document Consumer Consumer Document Generator Client Consumer Get ads ready to be indexed Index Processor Processor Ad Processor Processor Change Indexer add() Solr Index ad Database
  • 9. Index oppsett i FINN.no • En eller flere instanser • Solrconfig.xml for hvert marked – Konfigurasjon av solr – En eller flere index’er – Requesthandler (multicore) pr instans – Replikering • Logging med log4j • Synonymer – QueryLog – Egne synonym filer for – Applikasjonslog hver index. • Egen schema.xml og – Flere synonym filer med solrconfig.xml for hver forskjellig bruk indeks – Multi-ord synonymer ved indeksering • Felles felttyper
  • 10. 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
  • 11. Søk i FINN.no mot Solr bruker Apache Tiles, Spring MVC og SolrJ Endringer ved overgang fra Fast til solr Apache Spring MVC Search Search Tiles Controller Command Service SearchDisplay Config SearchService. Request QueryPolicy. buildSearchRequest() CreateQuery() Search Search Search Solr QueryResponse Index SearchServiceResult Transformer. SearchResult transform() SearchResult ResponseHandler. transform() Response
  • 12. Nettverkstopologi - 1 master + 4 slaver
  • 13. Erfaringer med Apache Solr Dette er vi misfornøyd med Dette er vi fornøyd med • Lucene Hunspell • Ytelse lemmatiserer i overkant • Indivduelle indekser mye • 1 prosess, war-fil, med • Encoding; & er vanskelig separat solr-konfig, som å få kontroll på kjøres som webapp i • Synonymer, multi-ord Tomcat synonymer • Skrevet i Java
  • 14. Erfaringene i henhold til forventninger, men kanskje undervurderte vi ordbok og synonym utfordringene FAST SOLR Lett å drifte Windows plattform + Linux (webapp i tomcat) Proprietær + Open Source Egne indekser og Lisens (pr søk evt. cpu) + Gratis konfigurasjoner for egne behov 1 indeks pr maskin/cluster + Flere indekser pr maskin/cluster Konsulentbasert + Communitybasert Enklere (billigere) å løse problemer Problem løses av FAST + Problem løses ved å lese kode Skrevet i mange språk + Skrevet i Java Ikke veldig mange Dokumentert + Eksempler gode eksempler ”Black Box” + Åpen Ordbokbasert støtte for norsk språk Tredjepartsverktøy med norsk ordbok (ISPELL) Orbok og synonymer var SBC for søkeordstatistikk + Ingen egen løsning for søkeordstatistikk en større I tillegg var ytelsen bedre for SBC for vedlikehold av synonymer+ Ingen egen løsning utfordring enn vedlikehold av forventet enn forventet synonymer Tilbyr Java - API Tilbyr Java – API Funksjonalitet bestemt ved indeksering Funksjonalitet bestemt ved søk Ikke mye brukt enda
  • 15. Apache Solr i FINN.no Helge Jenssen Søkearkitekt FINN.no