Søkemotor på 1-2-3. - En introduksjon til Solr og Lucene. Aleksander M. Stensby Integrasco A/S 2008-12-04



Like dokumenter
Bruk av Elasticsearch til søk og klassifisering. Ove Haugland Jakobsen 26 november 2018

Innstallasjon og oppsett av Wordpress

S y s t e m d o k u m e n t a s j o n

1. Intro om SharePoint 2013

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

GraphQL. Hva, hvorfor, hvordan

November 2012 Stig Claussen, Senior Consultant Psiam. Infor 10 EAM

Oblig 4 Webutvikling. Oppgave

SEO. Erlend Nilsen Senior rådgiver Seo og Content Marketing

Eksamen i Internetteknologi Fagkode: IVA1379

Hurtigstart guide. Searchdaimon ES (Enterprise Server)

UNIVERSITETET I OSLO

Testsituasjon Resultat Kommentar. Fungerer som det skal!

Hva, Hvorfor og litt om Hvordan

Tilkobling og Triggere

Stikkord: Java EE, EJB, JSF, JPA, SWT, klient/tjener, Glassfish server, Application Client.

SAS IN A SOA WORLD MARIUS SOMMERSETH TEAM LEAD TECHNICAL ARCHITECTURE

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

Publisering av statiske og dynamiske websider til klasserom.net fra Dreamweaver og MySQL

Responsiv design Skalering av siden trenger å gjøres noe med, slik at den er tilpasset de fleste skjermstørrelser.

Oppsummering. Thomas Lohne Aanes Thomas Amble

Avansert Søk Må Dø. Laura Arlov

V E I L E D N I N G F O R U T S E N D E L S E A V N Y H E T S B R E V

Implementering av caching ved hjelp av Spring. Christian Vestøl

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider:

Brukermanual - Joomla. Kopiering av materiale fra denne Bonefish manualen for bruk annet sted er ikke tillatt uten avtale 2010 Bonefish.

Tjenestebeskrivelse Webhotelltjenester

Programmering som journalistikk

Demo for første sprint

UNIVERSITETET I OSLO

- reklamebannere mobil og tablet

Vedlegg 1: Oversikt over noen mulige leverandører

Pen- tes'ng av webservices. Asbjørn Reglund Thorsen Gruppe- og utviklingsleder UIO/FSAT

Oppgavesett for NVivo 10

Innføring i bruk av skolens/barnehagens hjemmesider (for administrator)

Hva er det med internett, hvorfor satse på det?

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

IN2000. Gjennomgang av tekniske oppgaver på prøveeksamen. Erlend Stenlund og Steffen Almås + innspill fra Gaute Berge

6 Kravspesifikasjon. 6.1 Presentasjon. Tittel Precision Teaching App for Android

INF130 Databehandling og analyse

Fri programvare og 3.parts hosting

Hvordan publisere bilder i galleriet til Norsk lundehund klubb

INF Algoritmer og datastrukturer

WEBUTVIKLING OBLIG 4. Installasjon

EndNote referansehåndteringsprogram. HiVe biblioteket

Hvordan lage en hjemmeside

Bachelorprosjekt i informasjonsteknologi, vår 2017

Agenda. Tiden som har gått Tiden som kommer Noen tips til deg

CINAHL. En veiledning fra Medisinsk bibliotek

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

En kort presentasjon av

Søkemotorer. - en guide for en bedre rangering. Søkemotorer en guide for bedre rangering. InBusiness AS

Software Development Plan. Software Development Plan. Forum / Nettverkssamfunn Team 2

INF120: Oblig 3. Yngve Mardal Moe

Dette er en demonstrasjonsside som vi skal bruke for å se litt nærmere på HTTP protokollen. Eksemplet vil også illustrere et par ting i PHP.

UNIVERSITETET I OSLO

MS Windows, Linux. Smidig, Scrum, Testdreven utvikling. Tidsrom Firma Tittel Java versjon > Selvstendig konsulent 6

lagring med HTML5 Offline lagring Offline Informasjonsteknologi 2 Gløer Olav Langslet Sandvika VGS

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering

Brukerdokumentasjon Promed Online Booking

Kravspesifikasjon. Android app for aktivering av jakt- og fiskekort. Bacheloroppgave vår Høgskolen i Oslo og Akershus. Charlotte Sjøthun s180495

Konsulent-ID: 2225 Curriculum vitae

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Søkesystemer og thesauri

PRESENTASJON Uttrekk og bevaring av eldre fagsystem med dots kjernen

Oblig 3 Webutvikling. Oppgave 1

Steg for steg. Sånn tar du backup av Macen din

Dennis Myhre Oblig 4 Wordpress Dokumentering og Eksamensoppgaver

TDT4117 Information Retrieval - Autumn 2014

Controller Brukerstøttedatabase Ottar Holstad/Cantor 09.

Er Noark 5 og Datakvalitet det neste steget for depot? Thomas Sødring thomas.sodring@jbi.hio.no /

Oblig 3 Webutvikling

Http- og WebServices funksjoner

Testing av Noark 5 uttrekk med kdrs-toolboxvalidator og innsyn med kdrs-toolbox-innsyn. Thomas Sødring HiOA

Brukermanual. PUS i Web. Mai 2009 (Versjon 1)

Presentasjon av bachelorprosjekt 2009/2010 for Morten Hegstad og Kim Lilleberg. Prosjektnummer 2E

1 Innholdsfortegnelse

Parallelle og distribuerte databaser del III

Lage større programmer (Python, relatert til teoridelen om Software Engineering ) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Kontakt oss i Egroup for mer informasjon!

- analyse og implementasjon

Å lage Noark 4 uttrekk selv. Thomas Sødring thomas.sodring@jbi.hio.no /

TDT4110 IT Grunnkurs Høst 2012

Kjøre Wordpress på OSX

Oppgradering av Handyman til ny versjon

WinTid Scheduler. Oppgradering til versjon HRM

BRUKE ONEDRIVE OG SHAREPOINT

LAB-L SETTE OPP MICROSOFT SERVER 2003

IT for medisinsk sekretær Fredrikstad Kai Hagali

WX3in1 Plus - APRS advanced digipeater

FS-API Status og veien videre. Kai Quale og Mario Ledinscak KDTO

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Autentisering og autorisasjon i webapplikasjoner med en etablert standard: SAML 2.0

Norsk Data Senter AS Installasjon av Intentor Helpdesk

Eksport og innsending

Kap 3: Anvendelser av Internett

Tverrfaglig litteratursøking Google Scholar. Medisinsk bibliotek. Mai 2011

I Primo Back Office, finn Resource Recommender under Advanced Configuration eller i FE & Delivery-menyen.

Transkript:

Søkemotor på 1-2-3 - En introduksjon til Solr og Lucene Aleksander M. Stensby Integrasco A/S 2008-12-04

Introduksjon Hvem er jeg? Aleksander M. Stensby Master i IKT (Universitetet i Agder og Carleton University) Senior Systemutvikler, Integrasco A/S Mønstergjenkjenning, Maskinlæring, Tekstanalyse, Skalerbarhet, Søk, Database design, etc. Lucene, Solr, Hibernate, Mysql, Java ;) Hva er Integrasco? Word of Mouth / vareprat på nett Trend Analyse Web Mining, Mønstergjenkjenning, Portalløsninger

Oversikt Litt historie Lucene arkitektur og tankegang Skalerbarhet Solr til unnsetning! Tutorial: Søkemotor på 1-2-3 (forhåpentligvis) 10 tips og triks (erfaringer)

Search Evangelist... - Hvorfor søk? Mange muligheter - de fleste koster! Søk på din egen webside? Fulltekst-søk i databasen? Kontrollere rangeringen? Hva vil du søke på? Tekst Strukturert data? Skreddersydde løsninger

Søk?

Litt historie Doug Cutting Lucene «a search indexer» Nutch «a spider / crawler» The Apache Software Foundation http://lucene.apache.org/ Flere under-prosjekter og inkubator prosjekter Lucene Java (Java-basert indeksering og søketeknologi) Nutch Lucy (C port med Pearl og Ruby bindinger) og Lucene.Net Solr (søkeserver basert på Lucene Java) Tika (Incubation prosjekt for tekstanalyse) Mahout (Subprosjekt for skalerbar maskinlæring) Compass Framework (Javabasert søkemotor rammeverk bygget på toppen av Lucene) Finnes porter til C#, C++, Python, Ruby, Delphi, Pearl, Lisp og PHP! Lucene Java 2.4.0 (8 oktober) Solr 1.3.0 (15 september)

Skrytehistorier / Powered By Lucene Eclipse, Jira, Nabble, Omgili, Jguru, Sourceforge.net, PostRank, Furl, IBM OmniFind, The Server Side, Simpy,...... Wikipedia: Perhaps the most significant deployment of Lucene is Wikipedia, where it powers search for the entire site. Solr CNET Reviews, Shopper.com, Gamespot, Digg, AOL, CitySearch, Sesam!,...

Apache Lucene - Arkitektur og tankegang Lucene: «Tekstsøkemotor API» Mer spesifikt så er Lucene «kjærnen» i en søkemotor det vanskelige... DU skriver de enkle tingene rundt; UI, input og parsing av data filer som videre dyttes inn i søkemotoren. Raskt og rikt på muligheter Lucene is high-performance, scalable, full-featured, open-source, and written in Java.

Apache Lucene - Arkitektur og tankegang «Index» - Samling av dokumenter Et dokument består av felter og verdier Dokumenter er immutable Men, de kan slettes, og en ny versjon kan legges til Termer / Tokens Indeksering Tokenizing oppdeling av termer / tokens (StringTokenizer?) Stopp ord, Stemming, Synonymer Scoring: tf * idf * lengthnorm Søk Highlighting, MoreLikeThis / Suggest IndexWriter og IndexReader / IndexSearcher

Solr Solr er en high performance søkeserver bygget på Lucene Java, med XML/HTTP og JSON/Python/Ruby API'er. Solr støtter Lucene funksjonaliteten samt faceted search, caching, replikering og et web admin grensesnitt. Utviklet av CNET Koden åpnet og gitt til Apache inkubatorprosjekt I Januar 2006 Lucene under-prosjekt siden Januar 2007 Selling-points : Stabilt Raskt God støtte / Stort brukermiljø Enkelt å kontrollere scoring Open source ;) NB: Solr er IKKE en erstatning for en relasjonsdatabase!

Solr Skalerbarhet!

Konfigurasjon schema.xml Beskrivelse av datastrukturen solrconfig.xml Beskrivelse av hvordan brukerne kan interaktere med dataen schema.xml definere hvordan hvert felt skal indekseres: Er det et tall? En streng? En dato? Skal man ha en default verdi hvis dokumentet mangler dette? Lages feltet av å kombinere verdiene fra andre felt? Skal feltet lagres så man kan hente ut verdien? Skal feltet indekseres? Skal det parses? Hvordan? ID felt?

Mulighetene Facets Grupper resultater etter kategori Støtte for opptil flere facets samtidig Returnerer antall treff I hver kategori Filtrering Skalering Replikering Sharding Master / Slave arkitektur Paginering, Synonymer, «Google Suggest», «Advanced search»,...

Spørringer / Querying Http request Lucene Query Syntax + litt ekstra Response: XML eller JSON

Sette inn og hente ut data Sette inn: POST <add> <doc> <field name= kkkk >sdfjk</field>... </doc>... </add> Commit Send <commit/> til http://host:port/solr/update Hente ut: http://host:port/solr/select/?q=hei Respons Slette data: POST By id: <delete><id>29</id></delete> By query: <delete><query>hei</query></delete>

Søkemotor på 1-2-3 Alternativ 1: - «The easy way» aka. Jetty Last ned Solr fra Apache Pakk ut Eksempel webapp Last inn data i Solr Søk! Alternativ 2: - «Servlet container of your choice» Kopeier solr.war til webapps mappen Definer solr home Med java system property solr.solr.home Eller via JINDI Definere Schema.xml Tilpasse Solrconfig.xml Legge til data i indeksen Gjøre søk

Søkemotor på 1-2-3 SolrJ Legge til dokumenter Slette dokumenter Enkle spørringer Litt mer spennende spørringer Facets Husk: untokenized fields! Sorting

10 tips og triks / best practices - Eller pitfalls.. Luke Toolbox Design riktig struktur Det tar tid å finne rett modell Tenk nøye gjennom hvordan du vil tokenize!! Benytt felt som indekseres forskjellig Sorting bruker minne! Batch indeksering! Vær forsiktig med optimize! Warm up prosedyre og caching! Replikering! Vær realistisk, og forutse størrelse på indeks! - Sharding Tuning, men ikke «over-tune» Merge factor, maxbuffereddocs, cached filters (Query Filter) Repeat. Repeat. Repeat...

Kilder Mail lister: java-user@lucene.apache.org solr-user@lucene.apache.org Søk I arkivet! http://www.nabble.com/lucene-f44.html http://markmail.org/ Jira Wikier http://wiki.apache.org/lucene-java/ http://wiki.apache.org/solr Gospodnetic, Otis; Erik Hatcher (2004). Lucene in Action. Manning Publications. ISBN 978-1-932394-28-3.

Takk! Takk for at dere kom! Har dere spørsmål angående Lucene eller Solr så er det bare å maile meg!... og jeg er selvsagt åpen for diskusjon på JavaPilsen (og julematen) etter møtet! Aleksander M. Stensby aleksander.stensby@integrasco.no