SlideShare a Scribd company logo
1 of 33
Solr
Kvalitetno iskanje besedil na vaši spletni strani
Solr
• Kaj in zakaj?

• Osnove iskanja vsebine

• Osnovna konfiguracija

• Jeziki in več jeder

• Osvetljevanje in grupiranje



 Solr                           28.1.2013   2
Iskanje po besedilih
          Kako pa Google res dela?




Solr                                 28.1.2013   3
Iskanje po besedilih

           ?        ljubljana

           !

         Protesti se nadaljujejo v Ljubljani, Bohinju,
                 Ajdovščini in Murski Soboti

Solr                                               28.1.2013   4
Iskanje po besedilih

• Počasno

• Nenaravno, nenatančno




Solr   Strip z http://www.xkcd.com/55/   28.1.2013   5
Hitro iskanje




Solr                   28.1.2013   6
„Pravilno“ iskanje
ljubljana

  Ljubljane

 ljubljani
              ljubljanski
Solr                        28.1.2013   7
„Pravilno“ iskanje


       Tokenizacija   Normalizacija   Krnjenje   Kombiniranje




Solr                                                   28.1.2013   8
„Pravilno“ iskanje
         Tokenizacija      Normalizacija        Krnjenje         Kombiniranje




       Urad US-CERT je izjavil, da je »MD5 algoritem zlomljen in neprimeren za
                                 nadaljnjo uporabo«.




   urad uscert izjavil md5 algoritem zlomljen neprimeren nadaljnjo uporabo




Solr                                                                   28.1.2013   9
„Pravilno“ iskanje
       Tokenizacija     Normalizacija        Krnjenje         Kombiniranje




   urad uscert izjavil md5 algoritem zlomljen neprimeren nadaljnjo uporabo




   urad uscert izjaviti md5 algoritem zlomljen neprimeren nadaljnji uporaba




Solr                                                                 28.1.2013   10
„Pravilno“ iskanje
       Tokenizacija       Normalizacija        Krnjenje       Kombiniranje




   urad uscert izjaviti md5 algoritem zlomljen neprimeren nadaljnji uporaba

   urad                    izjaviti
   urad uscert             izjaviti md5
   urad uscert izjaviti    izjaviti md5 algoritem

           uscert
           uscert izjaviti
           uscert izjaviti md5
                                                    …
Solr                                                                 28.1.2013   11
Iskanje
                          Indeksiranje
           Tokenizacija    Normalizacija   Krnjenje   Kombiniranje




                              Iskanje
       ?   Tokenizacija    Normalizacija   Krnjenje   Kombiniranje




Solr                                                                 28.1.2013   12
Namestitev in uporaba
            Osnovna konfiguracija




Solr                                28.1.2013   13
Namestitev


github.com/izacus/solr_example




Solr                      28.1.2013   14
Namestitev

       Baza z eno samo tabelo!
           Shema in tipi definirani v schema.xml




Solr                                               28.1.2013   15
Namestitev
• SOLR_HOME

       o solrconfig.xml   - konfiguracija vseh jeder
       o news             - jedro
           • conf         - shema in konfiguracija jedra
           • data         - indeks in podatki
           • lib          - morebitne knjižnice




Solr                                                       28.1.2013   16
Namestitev

                    schema.xml
       Definicija polj, tipov polj in parametrov procesiranja teksta




        http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters




Solr                                                              24. 10. 2012   17
Uporaba

                         /update
       {"add":
         {"doc" : {"id" : "849323",
                         "naslov": "Naslov članka…", … },
         "commit" : {},
         "delete": {"id" : "3829382" },
         "delete": {"query“ : "*:*" }
       }

Solr                                                    24. 10. 2012   18
Uporaba

                           /select
       wt=json              - json format, možni tudi drugi
       q=<poizvedba>        - sama poizvedba
       fl=<polja>           - polja za poizvedbo
       start=<začetek>      - prva vrnjena vrstica (za paginacijo)
       rows=<št. vrstic>    - število vseh vrstic (za paginacijo)
       sort=<polja>         - sortiranje po poljih
       fq=<filter>          - poizvedba za filtriranje


Solr                                                         24. 10. 2012   19
Namestitev

       solrconfig.xml
       URLji in privzete nastavitve za polja




Solr                                           24. 10. 2012   20
Več jeder in jezikov



Solr                          28.1.2013   21
Jedra

       Samostojni indeksi
           Vsi znotraj enega procesa




Solr                                   24. 10. 2012   22
Jeziki

       Dva pristopa
        1.) Za vsak jezik eno jedro
        2.) Dinamična polja




Solr                                  24. 10. 2012   23
Jeziki


                      Solr

       /slovenian            /english




Solr                                    24. 10. 2012   24
Jeziki

       shards=<url,url,url>
          Poizvedba čez več (oddaljenih) jeder




Solr                                             24. 10. 2012   25
Slovenščina
              Lemmagen
                http://lemmatise.ijs.si/




         Knjižnica za Solr
https://bitbucket.org/mavrik/slovene_lemmatizer




  Solr                                     24. 10. 2012   26
Slovenščina
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ClassicFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory"
                                       preserveOriginal="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.StopFilterFactory" words="stopwords.txt"
                                       ignoreCase="true" />
<filter class="solr.ASCIIFoldingFilterFactory" />
<filter class="si.virag.solr.RdrLemmatizerFactory"
        dictionary="<pot_do_slovarjev>/lem-me-sl.bin" />
<filter class="solr.ShingleFilterFactory" maxShingleSize="3"
                                   outputUnigrams="true" />

  Solr                                             24. 10. 2012   27
Angleščina
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
                                       preserveOriginal="1" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory" />
<filter class="solr.PorterStemFilterFactory" />
<filter class="solr.ShingleFilterFactory" maxShingleSize="3"
                                       outputUnigrams="true"/>




   Solr                                             24. 10. 2012   28
Osvetljevanje in grupiranje
               Highlighting / Faceting




Solr                                     28.1.2013   29
Osvetljevanje
                     /select
       hl=true                 - vklop osvetljevanja
       hl.fl=<polja>           - polja za osvetlitev
       hl.fragsize=<št.znakov> - dolžina osvetljenega izseka
       hl.simple.pre=<značka> - začetek osvetlitve
       hl.simple.post=<značka> - konec osvetlitve


            http://wiki.apache.org/solr/HighlightingParameters




Solr                                                             24. 10. 2012   30
Grupiranje
                       /select
       facet=true               - vklop osvetljevanja
       facet.field=<polja>      - polja za osvetlitev
       facet.limit=<omejitev>   - omejitev števila vrednosti
       facet.mincount=<št>       - najmanjše število pojavitev



            http://wiki.apache.org/solr/SolrFacetingOverview




Solr                                                             24. 10. 2012   31
Nasveti
• SOLR NI BAZA!!!!!

• Uporabljajte analizator v Solrju

• Solr nima varnostne konfiguracije, preverjajte dostop do
  APIja

• Poganjanjte na Oracle JVM, ne OpenJDK

• Za produkte uporabljajte WorldDelimiterFilterFactory za
  ločevanje po številkah

• Filtriranje stop-wordov je dvorezen meč

 Solr                                               28.1.2013   32
?
          Jernej Virag

         @jernejv
       http://www.virag.si




Solr                         28.1.2013   33

More Related Content

More from Jernej Virag

From Doom to Crysis
From Doom to CrysisFrom Doom to Crysis
From Doom to CrysisJernej Virag
 
Game design - formal and dramatic elements
Game design - formal and dramatic elementsGame design - formal and dramatic elements
Game design - formal and dramatic elementsJernej Virag
 
Jni – java native interface
Jni – java native interfaceJni – java native interface
Jni – java native interfaceJernej Virag
 
Gaming industry in 2010
Gaming industry in 2010Gaming industry in 2010
Gaming industry in 2010Jernej Virag
 

More from Jernej Virag (11)

Android services
Android servicesAndroid services
Android services
 
Hitre aplikacije
Hitre aplikacijeHitre aplikacije
Hitre aplikacije
 
From Doom to Crysis
From Doom to CrysisFrom Doom to Crysis
From Doom to Crysis
 
Security
SecuritySecurity
Security
 
Ip security
Ip securityIp security
Ip security
 
Encryption
EncryptionEncryption
Encryption
 
The Task Model
The Task ModelThe Task Model
The Task Model
 
Game design - formal and dramatic elements
Game design - formal and dramatic elementsGame design - formal and dramatic elements
Game design - formal and dramatic elements
 
Java stereams
Java stereamsJava stereams
Java stereams
 
Jni – java native interface
Jni – java native interfaceJni – java native interface
Jni – java native interface
 
Gaming industry in 2010
Gaming industry in 2010Gaming industry in 2010
Gaming industry in 2010
 

Solr

  • 1. Solr Kvalitetno iskanje besedil na vaši spletni strani
  • 2. Solr • Kaj in zakaj? • Osnove iskanja vsebine • Osnovna konfiguracija • Jeziki in več jeder • Osvetljevanje in grupiranje Solr 28.1.2013 2
  • 3. Iskanje po besedilih Kako pa Google res dela? Solr 28.1.2013 3
  • 4. Iskanje po besedilih ? ljubljana ! Protesti se nadaljujejo v Ljubljani, Bohinju, Ajdovščini in Murski Soboti Solr 28.1.2013 4
  • 5. Iskanje po besedilih • Počasno • Nenaravno, nenatančno Solr Strip z http://www.xkcd.com/55/ 28.1.2013 5
  • 6. Hitro iskanje Solr 28.1.2013 6
  • 7. „Pravilno“ iskanje ljubljana Ljubljane ljubljani ljubljanski Solr 28.1.2013 7
  • 8. „Pravilno“ iskanje Tokenizacija Normalizacija Krnjenje Kombiniranje Solr 28.1.2013 8
  • 9. „Pravilno“ iskanje Tokenizacija Normalizacija Krnjenje Kombiniranje Urad US-CERT je izjavil, da je »MD5 algoritem zlomljen in neprimeren za nadaljnjo uporabo«. urad uscert izjavil md5 algoritem zlomljen neprimeren nadaljnjo uporabo Solr 28.1.2013 9
  • 10. „Pravilno“ iskanje Tokenizacija Normalizacija Krnjenje Kombiniranje urad uscert izjavil md5 algoritem zlomljen neprimeren nadaljnjo uporabo urad uscert izjaviti md5 algoritem zlomljen neprimeren nadaljnji uporaba Solr 28.1.2013 10
  • 11. „Pravilno“ iskanje Tokenizacija Normalizacija Krnjenje Kombiniranje urad uscert izjaviti md5 algoritem zlomljen neprimeren nadaljnji uporaba urad izjaviti urad uscert izjaviti md5 urad uscert izjaviti izjaviti md5 algoritem uscert uscert izjaviti uscert izjaviti md5 … Solr 28.1.2013 11
  • 12. Iskanje Indeksiranje Tokenizacija Normalizacija Krnjenje Kombiniranje Iskanje ? Tokenizacija Normalizacija Krnjenje Kombiniranje Solr 28.1.2013 12
  • 13. Namestitev in uporaba Osnovna konfiguracija Solr 28.1.2013 13
  • 15. Namestitev Baza z eno samo tabelo! Shema in tipi definirani v schema.xml Solr 28.1.2013 15
  • 16. Namestitev • SOLR_HOME o solrconfig.xml - konfiguracija vseh jeder o news - jedro • conf - shema in konfiguracija jedra • data - indeks in podatki • lib - morebitne knjižnice Solr 28.1.2013 16
  • 17. Namestitev schema.xml Definicija polj, tipov polj in parametrov procesiranja teksta http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters Solr 24. 10. 2012 17
  • 18. Uporaba /update {"add": {"doc" : {"id" : "849323", "naslov": "Naslov članka…", … }, "commit" : {}, "delete": {"id" : "3829382" }, "delete": {"query“ : "*:*" } } Solr 24. 10. 2012 18
  • 19. Uporaba /select wt=json - json format, možni tudi drugi q=<poizvedba> - sama poizvedba fl=<polja> - polja za poizvedbo start=<začetek> - prva vrnjena vrstica (za paginacijo) rows=<št. vrstic> - število vseh vrstic (za paginacijo) sort=<polja> - sortiranje po poljih fq=<filter> - poizvedba za filtriranje Solr 24. 10. 2012 19
  • 20. Namestitev solrconfig.xml URLji in privzete nastavitve za polja Solr 24. 10. 2012 20
  • 21. Več jeder in jezikov Solr 28.1.2013 21
  • 22. Jedra Samostojni indeksi Vsi znotraj enega procesa Solr 24. 10. 2012 22
  • 23. Jeziki Dva pristopa 1.) Za vsak jezik eno jedro 2.) Dinamična polja Solr 24. 10. 2012 23
  • 24. Jeziki Solr /slovenian /english Solr 24. 10. 2012 24
  • 25. Jeziki shards=<url,url,url> Poizvedba čez več (oddaljenih) jeder Solr 24. 10. 2012 25
  • 26. Slovenščina Lemmagen http://lemmatise.ijs.si/ Knjižnica za Solr https://bitbucket.org/mavrik/slovene_lemmatizer Solr 24. 10. 2012 26
  • 27. Slovenščina <charFilter class="solr.HTMLStripCharFilterFactory"/> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.ClassicFilterFactory" /> <filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" /> <filter class="solr.LowerCaseFilterFactory" /> <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true" /> <filter class="solr.ASCIIFoldingFilterFactory" /> <filter class="si.virag.solr.RdrLemmatizerFactory" dictionary="<pot_do_slovarjev>/lem-me-sl.bin" /> <filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true" /> Solr 24. 10. 2012 27
  • 28. Angleščina <charFilter class="solr.HTMLStripCharFilterFactory"/> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.ASCIIFoldingFilterFactory"/> <filter class="solr.EnglishPossessiveFilterFactory" /> <filter class="solr.PorterStemFilterFactory" /> <filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true"/> Solr 24. 10. 2012 28
  • 29. Osvetljevanje in grupiranje Highlighting / Faceting Solr 28.1.2013 29
  • 30. Osvetljevanje /select hl=true - vklop osvetljevanja hl.fl=<polja> - polja za osvetlitev hl.fragsize=<št.znakov> - dolžina osvetljenega izseka hl.simple.pre=<značka> - začetek osvetlitve hl.simple.post=<značka> - konec osvetlitve http://wiki.apache.org/solr/HighlightingParameters Solr 24. 10. 2012 30
  • 31. Grupiranje /select facet=true - vklop osvetljevanja facet.field=<polja> - polja za osvetlitev facet.limit=<omejitev> - omejitev števila vrednosti facet.mincount=<št> - najmanjše število pojavitev http://wiki.apache.org/solr/SolrFacetingOverview Solr 24. 10. 2012 31
  • 32. Nasveti • SOLR NI BAZA!!!!! • Uporabljajte analizator v Solrju • Solr nima varnostne konfiguracije, preverjajte dostop do APIja • Poganjanjte na Oracle JVM, ne OpenJDK • Za produkte uporabljajte WorldDelimiterFilterFactory za ločevanje po številkah • Filtriranje stop-wordov je dvorezen meč Solr 28.1.2013 32
  • 33. ? Jernej Virag @jernejv http://www.virag.si Solr 28.1.2013 33