Text Search 101
Georg M. Sorst, CTO FINDOLOGIC
            	
            - On-Site Suche für Online-Shops
- Seit 7 Jahren dabei
- 18 Sprachen, 20 Länder, 20 Millionen Benutzer
 
            
            Publikum fragen, was das wichtigste im Shop ist?
            Gute Suche für 78% der Besucher das Wichtigste
        Suche ist überall
            - Internet
- eCommerce
- CMS, Blogs
- Intranet
- Wissenschaft
- ...
Wie suchen?
            
            Publikum fragen, wie man schnell im Buch sucht?
            Problem solved
            
            Index muss erstellt werden = zusätzlicher Aufwand
            - Passende Dokumente zu Worten finden
- Wort → Seite / Dokument ID / Artikel ID / URL
Inverted Index
        Warum keine DB?
            Viele Performance Killer:
            - Optimiert für Lesen / Schreiben
- Schreiben erfordert Locks
- Normalisierte Daten, JOINs
- Schlecht für unstrukturierte Daten (=Text)
Search Performance
- Import: 130M Dokumente in ~28m, 76.000 docs / s [1]
- Abfrage: Schnell... sehr schnell (wenn die Caches wirken)
Tokenization
- Text → Tokens (Worte)
- 
The quick brown fox → [the, quick, brown, fox]
- Tokens im Index speichern
Suchen
- Tokenization der Suchanfrage
- Query Tokens im Index suchen
- Es können nur genaue Tokens gesucht werden
Dokument #1: the quick brown fox
        	Dokument #2: the slowest green fox
            Index
                brown
                    #1
                
                		fox
            		
                    #1, #2
                green
                    #2
                the
                    #1, #2
                quick
                    #1
                slowest
                    #2
                Suche:
            	
        			quick
    			
            	
        			fox
        		
        	
        	
        		→ #1
        	
        Dokument #1: the quick brown fox
        	Dokument #2: the slowest green fox
            Index
                brown
                    #1
                
                		fox
            		
                    #1, #2
                green
                    #2
                the
                    #1, #2
                quick
                    #1
                slowest
                    #2
                Suche:
            	
        			slowest
    			
            	
        			foxes
        		
        	
        	
        		→ kein Ergebnis
        	
        Analysis
			- 
häuser findet nichts zu haus? Stemming
- 
apfelsine findet nichts zu orange? Synonyme
- 
schiff findet nichts zu dampfschiff? Wortauftrennung
- 
das haus findet nichts zu ein haus? Stopwords
- Sowohl beim Import als auch bei der Suche
Index
                    
                    
                    
                    
                    Query
                    
                
                    die schreibtischlampen
                    eine leuchte
                    
                Tokenization
                    die
                    schreibtischlampen
                    eine
                    leuchte
                Stopword
                    
                    schreibtischlampen
                    
                    leuchte
                Wortauftrennung
                    
                    schreib
                    tisch
                    lampen
                    
                    leuchte
                Stemming
                    
                    schreib
                    tisch
                    lamp
                    
                    leucht
                Synonyme(nur Index)
                    
                    schreib
                    tisch
                    lamp
                    
leucht
                    
                    
                    
leucht
                    
                
            Führt zu unschärferen ErgebnissenPrecision vs Recall. Fight!
        Precision
Sind nur relevante Dokumente in den Ergebnissen?
Recall
Sind alle relevanten Dokumente in den Ergebnissen?
Precision vs Recall niemals korrekt, aber beste Ergebnisse sollten am Anfang stehen → RankingTerm Frequency
- Wie oft kommt Suchwort im Dokument vor?
- Achtung: Suchwort kommt im Text oft gar nicht vor, z.B. Artikel-Beschreibung eines Fahrrads
Inverse Document Frequency
- Wie oft kommt Suchwort im Korpus vor?
- IDF nur bei ODER Suche relevant
- 
brown fox → Buch über Tiere wird öfter brown als fox enthalten
Suchoperatoren
Phrases
"brown fox"
Fields
title:fox
Wildcard
bro*
Fuzzy
bron~
Proximity
"quick fox"~1
Range
price:[1 TO 5], title:[A to Z]
AND / OR / NOT
fox -brown
Grouping
fox AND (brown OR green)
Levenshtein
            Tier~
                    
                1. Ersetze i durch o
                    Toer
                2. Streiche e
                    Tor
                Suchsoftware
- Kommerziell- Enterprise Search
- FINDOLOGIC :)
 
- Open Source- Solr
- ElasticSearch
- (Lucene)
- (Sphinx)
 
Daten rein
- POST Requests
- Solr Cell (Office, PDF etc.)
- DataImportHandler (SQL)
- ORM Konnektoren
Daten raus
- GET requests: …?q=android&start=0&rows=10&sort=price
- XML, JSON, CSV, PHPs, ...
The way of the future
- Kontext
- Örtlich, zeitlich, persönlich
- Searchless Search
- Semantik
Danke
- @piefke_schorsch
- g.sorst@findologic.com
 
Text Search 101
Georg M. Sorst, CTO FINDOLOGIC