textsearch



textsearch

0 1


textsearch


On Github georgms / textsearch

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

Warum Suche?

Suche im eCommerce

 

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)

How do I even search?

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 → Ranking

Gewichtung

TF/IDF

Term 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

What else?

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

Facets

Suggest

Suchsoftware

  • Kommerziell
    • Enterprise Search
    • FINDOLOGIC :)
  • Open Source
    • Solr
    • ElasticSearch
    • (Lucene)
    • (Sphinx)

Solr

Analyzers

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, ...

Daten raus

The way of the future

The way of the future

  • Kontext
  • Örtlich, zeitlich, persönlich
  • Searchless Search
  • Semantik

Solr Workshop

4.12.

Danke

  • @piefke_schorsch
  • g.sorst@findologic.com
Text Search 101 Georg M. Sorst, CTO FINDOLOGIC