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 Ergebnissen
Precision 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