WEBVTT

00:00:00.640 --> 00:00:04.820
Ja, hallo liebe Hörerinnen und Hörer. Willkommen zum Python-Podcast in der heute 18. Episode.

00:00:05.440 --> 00:00:08.000
Heute geht es um die Suche. Hier ist der Dominik und neben mir ist der Jochen.

00:00:08.500 --> 00:00:09.420
Ja, hallihallo.

00:00:09.940 --> 00:00:12.580
Wir sind wieder auf der Raumschiffbrücke heute.

00:00:12.940 --> 00:00:13.320
Genau.

00:00:13.460 --> 00:00:15.140
Erneut. Schön hier.

00:00:15.760 --> 00:00:20.500
Ja, genau, Volltextsuche, um es genau zu sagen.

00:00:21.100 --> 00:00:22.180
Ja, ah oh, Volltextsuche, ja.

00:00:22.180 --> 00:00:29.740
Ja, aber wollen wir das eigentlich, oder ich meine, wir können einfach ganz normal starten.

00:00:30.000 --> 00:00:31.460
mit News und Dings.

00:00:31.920 --> 00:00:33.720
Ja, genau. Ich würde auch sagen, wir machen jetzt wie immer

00:00:33.720 --> 00:00:34.620
unsere kleine Einleitung.

00:00:35.600 --> 00:00:37.160
Vielen Dank an unsere zahlreichen Hörer.

00:00:37.320 --> 00:00:39.620
Wir haben tatsächlich mittlerweile einige Blumen und dann die schönen Fragen,

00:00:39.740 --> 00:00:41.560
die uns immer erreichen. Wir beantworten die immer gerne und versuchen

00:00:41.560 --> 00:00:43.860
immer, euch so schön

00:00:43.860 --> 00:00:45.600
wie möglich das zu erklären, was ihr gerne hören möchtet.

00:00:45.720 --> 00:00:47.780
Also wenn ihr Fragen habt, Lob, Anregungen,

00:00:47.920 --> 00:00:49.860
Kommentare, hallo at pythonpodcast.de

00:00:49.860 --> 00:00:51.600
Schickt uns einfach eine Mail

00:00:51.600 --> 00:00:53.480
oder kommentiert fleißig auf unserer Seite.

00:00:54.780 --> 00:00:56.120
Ja, News aus der Szene.

00:00:56.300 --> 00:00:57.740
Heute ist der Erscheinungstag von Python

00:00:57.740 --> 00:00:58.580
3.8.2.

00:00:59.500 --> 00:01:00.960
Es ist aber noch nicht da.

00:01:01.740 --> 00:01:03.480
Wir haben gerade abends, es ist dunkel.

00:01:03.820 --> 00:01:04.080
Genau.

00:01:05.120 --> 00:01:06.700
Heute ist Rosenmontag übrigens auch.

00:01:06.980 --> 00:01:08.580
Ja, und das

00:01:08.580 --> 00:01:11.380
wird hier wahrscheinlich auch noch eine sehr

00:01:11.380 --> 00:01:12.360
Jacke-Veranstaltung.

00:01:12.920 --> 00:01:14.560
Wir sind unbeschadet heimgekommen, ja.

00:01:15.100 --> 00:01:17.420
Ich war heute einer der wenigen Leute, die

00:01:17.420 --> 00:01:19.160
irgendwie im Pro saßen und so.

00:01:19.160 --> 00:01:20.920
Es war sehr angenehm, wir haben ein bisschen was geschafft gekriegt.

00:01:21.620 --> 00:01:23.060
Ja, und wenn du auf die Straße gehst

00:01:23.060 --> 00:01:25.200
und aussiehst, wärst du schon verkleidet, ist das auch gar nicht groß aufgefallen.

00:01:25.220 --> 00:01:25.840
Ja, ja, ja.

00:01:27.200 --> 00:01:27.960
Horror-Clown.

00:01:28.980 --> 00:01:29.820
Ich empfehle ihn.

00:01:31.460 --> 00:01:32.040
Sehr gut.

00:01:32.940 --> 00:01:35.380
Ja, wir machen heute Volltext-Suche.

00:01:36.120 --> 00:01:37.900
Und ja, Nuss aus der Szene, ist dir noch was eingefallen?

00:01:37.980 --> 00:01:38.740
Hatten wir noch was Schönes?

00:01:42.760 --> 00:01:44.940
Tatsächlich glaube ich eigentlich nicht.

00:01:45.040 --> 00:01:46.140
War gar nicht so viel los, ne?

00:01:46.140 --> 00:01:47.460
Eurofice ist noch im Moment drin.

00:01:48.400 --> 00:01:49.660
Gehst du hin zur Eurofice?

00:01:49.820 --> 00:01:50.500
Ja, ja, ja.

00:01:50.720 --> 00:01:51.380
Ach schön, cool.

00:01:51.500 --> 00:01:55.440
Wir müssen uns nur noch irgendwie mit Kindergarten und so beklären.

00:01:55.840 --> 00:01:57.760
Die machen ja auch irgendwie Betriebsferien und so,

00:01:57.860 --> 00:01:58.880
aber eigentlich schon, ja.

00:01:58.980 --> 00:02:01.840
Ja, sonst musst du alleine. Ich habe mir schon

00:02:01.840 --> 00:02:03.020
eine Wohnung

00:02:03.020 --> 00:02:04.640
organisiert.

00:02:06.240 --> 00:02:08.140
Also falls noch jemand eine WG sucht oder sowas,

00:02:08.220 --> 00:02:08.640
sagt mir Bescheid.

00:02:09.920 --> 00:02:11.880
Was gab es noch? Es gab so einen tollen Tweet, hast du gesagt, von

00:02:11.880 --> 00:02:13.420
Armin Runacher. Das ist der

00:02:13.420 --> 00:02:15.860
Haupt-Dev, der Entwickler von

00:02:15.860 --> 00:02:17.620
Flask. Ja, aber das wollte ich eigentlich später erst picken.

00:02:17.980 --> 00:02:18.940
Ach, das wolltest du picken? Ja.

00:02:19.760 --> 00:02:20.340
Ach, das ist ein Modul.

00:02:21.740 --> 00:02:23.200
Ich dachte, wir picken Module, Jochen.

00:02:24.740 --> 00:02:25.500
Heute nicht.

00:02:26.760 --> 00:02:27.940
Oh Gott, jetzt ist alles durcheinander.

00:02:28.020 --> 00:02:30.140
Ja, okay, dann picken wir keine Module, dann machen wir das am Ende.

00:02:31.240 --> 00:02:32.180
Ja, aber

00:02:32.180 --> 00:02:34.020
was wir tun könnten wäre, wir könnten ja heute mal

00:02:34.020 --> 00:02:35.960
mit dieser Tradition, die wir jetzt schon

00:02:35.960 --> 00:02:37.840
seit einigen Episoden starten wollten, tatsächlich

00:02:37.840 --> 00:02:39.760
vielleicht mal anfangen und ein Modul aus der

00:02:39.760 --> 00:02:41.760
Standardbibliothek uns

00:02:41.760 --> 00:02:43.840
vornehmen. Ja, gute Idee.

00:02:44.580 --> 00:02:45.480
Und das nennen wir Parslip.

00:02:46.380 --> 00:02:47.880
Parslip, ja, genau.

00:02:49.400 --> 00:02:49.580
Das

00:02:49.580 --> 00:02:51.980
immer wieder, wenn ich halt irgendwie

00:02:51.980 --> 00:02:53.880
in Code herumnavigiere

00:02:53.880 --> 00:02:55.060
und sehe dann irgendwo so Import

00:02:55.060 --> 00:02:57.400
ja, OS und dann halt

00:02:57.400 --> 00:02:59.520
OS-Path und so und dann

00:02:59.520 --> 00:03:01.320
machen Leute da Dinge, dann denke ich mir jetzt,

00:03:01.380 --> 00:03:02.980
ach, es geht zu viel schöner mit Pathslip.

00:03:03.960 --> 00:03:05.420
Also vielleicht nochmal kurz, was Pathslip ist.

00:03:05.460 --> 00:03:07.260
Pathslip ist ein Wrapper

00:03:07.260 --> 00:03:09.060
oder ist das eine komplett neue Implementierung?

00:03:09.640 --> 00:03:11.320
Das ist ein Modul aus der Standardbibliothek,

00:03:11.380 --> 00:03:13.320
ich weiß jetzt gar nicht, ne, das ist kein Wrapper

00:03:13.320 --> 00:03:14.980
um OS-Path, ne, ne,

00:03:15.040 --> 00:03:17.260
das ist halt auch so ein bisschen, manchmal

00:03:17.260 --> 00:03:18.880
ist so ein bisschen unübersichtlich, es gibt einige

00:03:18.880 --> 00:03:21.480
Module in der Standardbibliothek,

00:03:21.540 --> 00:03:22.920
die halt so ein bisschen das Gleiche machen

00:03:22.920 --> 00:03:25.000
unter anderem halt eben

00:03:25.000 --> 00:03:26.860
US Path und dann

00:03:26.860 --> 00:03:29.020
Shell Utils, also SH Util

00:03:29.020 --> 00:03:31.680
macht auch so ein bisschen das gleiche,

00:03:31.740 --> 00:03:32.740
aber so ein bisschen eine andere

00:03:32.740 --> 00:03:34.940
Geschmacksrichtung. Pathlip macht jetzt auch

00:03:34.940 --> 00:03:36.180
nochmal das gleiche, aber auch wieder ein bisschen anders.

00:03:36.920 --> 00:03:38.580
Ach ja, aber

00:03:38.580 --> 00:03:40.820
im Grunde denke ich, wenn man jetzt mit

00:03:40.820 --> 00:03:42.760
Pfaden irgendwie Dinge macht, dann ist Pathlip das,

00:03:42.840 --> 00:03:43.740
was man eigentlich haben will.

00:03:44.580 --> 00:03:46.520
Und das ist auch so richtig, ich glaube, das ist auch erst seit

00:03:46.520 --> 00:03:47.740
Python 3,

00:03:48.540 --> 00:03:50.300
4 oder so drin.

00:03:51.500 --> 00:03:52.740
Und auch, aber auch

00:03:52.740 --> 00:03:54.480
erst seit 3.6 so richtig schön.

00:03:55.580 --> 00:03:56.820
Oder 3.7 sind auch nochmal

00:03:56.820 --> 00:03:58.460
interessante Dinge dazugekommen. Glaube ich ist

00:03:58.460 --> 00:04:00.040
Mounts dazugekommen in 3.7.

00:04:01.600 --> 00:04:02.720
Also nur

00:04:02.720 --> 00:04:04.920
in aktuelleren 3.3

00:04:04.920 --> 00:04:06.760
Versionen. Also man kann halt relativ

00:04:06.760 --> 00:04:08.440
schick irgendwelche Strings zu

00:04:08.440 --> 00:04:10.540
Verzeichnisnamen oder Dateinamen parsen

00:04:10.540 --> 00:04:13.020
und dann da Pfade, Pfadobjekte

00:04:13.020 --> 00:04:14.580
daraus erstellen und dann

00:04:14.580 --> 00:04:16.120
einfach mit einem Slash dahinter dann

00:04:16.120 --> 00:04:18.380
Unterverzeichnisse wechseln oder iterieren

00:04:18.380 --> 00:04:20.680
über so Pfade und die ganzen schönen

00:04:20.680 --> 00:04:23.160
Listen anzeigen oder Content anzeigen,

00:04:23.240 --> 00:04:25.000
gucken, ist es ein Verzeichnis, ist es kein

00:04:25.000 --> 00:04:26.180
Verzeichnis, ist es eine Datei.

00:04:26.820 --> 00:04:29.160
Ja genau, das Hauptfeature finde ich, dass man

00:04:29.160 --> 00:04:31.200
damit halt relativ einfach

00:04:31.200 --> 00:04:33.220
Pfade so hinschreiben kann, ohne

00:04:33.220 --> 00:04:35.060
jetzt irgendwie viel

00:04:35.060 --> 00:04:37.180
Boilerplate-Code

00:04:37.180 --> 00:04:38.600
außenrum schreiben zu müssen, wenn man jetzt

00:04:38.600 --> 00:04:41.200
Join und dann die Liste, das ist halt immer so ein bisschen

00:04:41.200 --> 00:04:42.940
und jetzt kann man halt einfach, man schreibt halt

00:04:42.940 --> 00:04:44.700
ein Slash und dann macht dieser Operator

00:04:44.700 --> 00:04:46.940
sozusagen eine

00:04:46.940 --> 00:04:48.740
Verkettung der Namen, die man da

00:04:48.740 --> 00:04:50.980
Ja, das wollen wir aus dem Dateisystem eigentlich auch kennen.

00:04:51.200 --> 00:04:52.480
Genau, und dann sieht das halt

00:04:52.480 --> 00:04:55.140
im Code fast genauso aus, als würde man

00:04:55.140 --> 00:04:57.120
es auf die Shell schreiben. Und das ist natürlich schon

00:04:57.120 --> 00:04:59.000
deutlich kompakter und

00:04:59.000 --> 00:05:00.800
sieht einfach, ja, man sieht,

00:05:01.060 --> 00:05:01.460
was passiert.

00:05:02.780 --> 00:05:04.900
Das ist ein tolles Ding, aber halt auch solche Sachen wie

00:05:04.900 --> 00:05:06.900
so Convenience-Funktionen für Sachen, die man halt dauernd

00:05:06.900 --> 00:05:08.040
braucht, also sowas wie

00:05:08.040 --> 00:05:10.900
ich brauche jetzt ja irgendwie mal

00:05:10.900 --> 00:05:13.040
den Versionen des Dateinamens

00:05:13.040 --> 00:05:14.880
ohne Endung, also ohne

00:05:14.880 --> 00:05:16.960
irgendwie MP4 hinten dran oder

00:05:16.960 --> 00:05:19.180
MP3. Oder auch mit, das geht auch. Oder mit, oder nur

00:05:19.180 --> 00:05:21.180
das Suffix oder so. Solche

00:05:21.180 --> 00:05:22.300
Dinge braucht man ja dauernd.

00:05:23.660 --> 00:05:25.180
Und dafür gibt es halt dann eben

00:05:25.180 --> 00:05:27.040
schon eingebaute

00:05:27.040 --> 00:05:29.240
Attribute, die man einfach

00:05:29.240 --> 00:05:29.920
so verwenden kann.

00:05:30.800 --> 00:05:33.120
Das ist halt total nett.

00:05:33.960 --> 00:05:35.140
Ich muss gestehen, als ich mit Python

00:05:35.140 --> 00:05:36.980
angefangen habe, gab es das schon. Und deswegen habe ich

00:05:36.980 --> 00:05:38.900
OS-Parse nur ab und zu mal

00:05:38.900 --> 00:05:40.700
angesehen und gesagt, ist das hässlich, dann gesehen.

00:05:40.840 --> 00:05:42.040
Ach ja, okay, das ist jetzt Parselip.

00:05:42.840 --> 00:05:43.660
Ja, ja, ja.

00:05:44.400 --> 00:05:46.800
Ich stolper fast täglich über Code,

00:05:46.860 --> 00:05:49.160
wo halt noch OS-Path verwendet wird

00:05:49.160 --> 00:05:50.260
und nicht die Path-Slip insofern.

00:05:50.520 --> 00:05:52.200
Auch ganz oft in Django ist das auch ganz oft drin,

00:05:52.340 --> 00:05:53.660
in den Settings oder sowas.

00:05:54.380 --> 00:05:56.020
Ich bin erst einmal irgendwo drüber gestolpert,

00:05:56.140 --> 00:05:58.260
wo es nicht mir gelang, das zu entfernen.

00:05:58.340 --> 00:06:00.200
Ich bin mir nicht sicher, ob das an meinen Fähigkeiten lag

00:06:00.200 --> 00:06:01.160
oder an der Implementierung.

00:06:02.320 --> 00:06:03.860
Die brach dann einfach durch,

00:06:03.960 --> 00:06:05.400
weil ich Path-Slip-Objekte genommen habe.

00:06:06.020 --> 00:06:08.440
Und wenn man das halt irgendwie anders gewohnt ist,

00:06:08.500 --> 00:06:10.860
dann gibt es unten, wenn man die Dokumentation

00:06:10.860 --> 00:06:12.880
sich anguckt, nochmal eine Liste von

00:06:12.880 --> 00:06:14.880
also, wie man das früher

00:06:14.880 --> 00:06:16.780
mit OS-Path gemacht hat und jetzt, wie man es mit Path-Slip

00:06:16.780 --> 00:06:18.520
machen kann, Tabelle

00:06:18.520 --> 00:06:20.920
und da findet man dann meistens schon die Funktion, die man sucht.

00:06:21.080 --> 00:06:22.000
Stellen wir euch nicht schon los.

00:06:22.360 --> 00:06:24.720
Ja, genau. Also, genau, damit haben wir

00:06:24.720 --> 00:06:26.740
das tatsächlich mal gemacht, was wir

00:06:26.740 --> 00:06:27.780
immer, wo wir noch von geredet haben.

00:06:27.780 --> 00:06:30.060
Ja, also wir wollen jetzt tatsächlich das einfüllen, schreibt uns, ob es euch gefallen hat.

00:06:30.780 --> 00:06:32.740
Und wenn ihr irgendwie von unserem Podcast die Struktur

00:06:32.740 --> 00:06:34.340
irgendwie blöd findet, wann wir was erzählen, dann

00:06:34.340 --> 00:06:36.480
könnt ihr auch dazu gerne mal Feedback geben, wenn wir es irgendwie

00:06:36.480 --> 00:06:38.520
neu umsortieren wollen, wenn ihr immer zuerst die Pics

00:06:38.520 --> 00:06:40.480
haben wollt oder erstmal direkt das Thema, bevor wir

00:06:40.480 --> 00:06:41.420
irgendwas über News erzählen.

00:06:42.340 --> 00:06:44.520
Ja, aber trotzdem, dann machen wir Volltextsuche

00:06:44.520 --> 00:06:45.900
weiter und ich werde dich löchern damit.

00:06:46.200 --> 00:06:47.780
Oder wollen wir noch ganz kurz

00:06:47.780 --> 00:06:49.540
ein Meta-Ding

00:06:49.540 --> 00:06:51.960
kurz, also ich überlege gerade,

00:06:52.240 --> 00:06:53.880
weil mich hatte diese, da gab es

00:06:53.880 --> 00:06:54.140
eine Mail,

00:06:54.740 --> 00:06:57.840
wo

00:06:57.840 --> 00:06:59.920
dran, ja,

00:07:01.200 --> 00:07:01.720
wo wir

00:07:01.720 --> 00:07:02.540
parken wollen, ob wir nicht

00:07:02.540 --> 00:07:05.860
mehr Dinge erklären könnten.

00:07:06.140 --> 00:07:07.960
Ach so, stimmt. Und ja, ich kann

00:07:07.960 --> 00:07:09.300
das durchaus verstehen, also es ist halt

00:07:09.300 --> 00:07:11.800
viele Sachen, die man einfach so

00:07:11.800 --> 00:07:13.920
vor sich hin redet und nicht drüber

00:07:13.920 --> 00:07:15.620
nachdenkt, die zu erklären, dann ist das

00:07:15.620 --> 00:07:16.960
Das ist halt schnell unverständlich.

00:07:18.540 --> 00:07:21.720
Aber auf der anderen Seite ist es halt, glaube ich, schwierig.

00:07:22.700 --> 00:07:23.480
Ja, es ist so ein Trade-off.

00:07:23.580 --> 00:07:24.780
Einige Menschen, die kennen das halt schon alles.

00:07:24.880 --> 00:07:26.500
Und wenn man dann jeden Schnipsel erzählt,

00:07:26.560 --> 00:07:27.340
ist es vielleicht uninteressanter.

00:07:27.360 --> 00:07:28.680
Dann wird es für die uninteressanter.

00:07:28.820 --> 00:07:30.680
Und die Frage, an wen wendet man sich da eigentlich?

00:07:30.680 --> 00:07:32.580
Wie Einsteiger wollen wir das Ganze machen?

00:07:32.680 --> 00:07:33.420
Ja, das ist gar nicht so einfach.

00:07:33.520 --> 00:07:35.380
Ich glaube, bestimmte Sachen muss man vielleicht selber nachgucken.

00:07:35.560 --> 00:07:37.860
Und man kann uns immer fragen, wenn man irgendwas nicht versteht.

00:07:38.260 --> 00:07:39.520
Wir erklären das immer gerne nochmal

00:07:39.520 --> 00:07:40.860
und nehmen das auch in einer der Folgen.

00:07:40.920 --> 00:07:41.960
Ich glaube, das ist vielleicht eine gute Idee.

00:07:43.000 --> 00:07:48.100
Und ja, tatsächlich, wenn uns irgendwas auffällt, versuchen wir es so tief wie möglich zu erklären.

00:07:48.460 --> 00:07:53.020
Ja, aber das würde mich eben auch nochmal interessieren, wie das andere Leute sehen oder auch wie du das siehst, das weiß ich auch gar nicht.

00:07:54.040 --> 00:08:00.200
Weil ich würde sagen, das ist ja eigentlich das Tolle an, ich komme drauf, weil letzte, ich höre ja auch noch viele andere Podcasts,

00:08:00.200 --> 00:08:07.860
ich höre zum Beispiel Philosophische Radio auf WDR 5 oder die Radio Bissen, ich weiß jetzt gar nicht, auf welchem Sender, ich höre es ja nur als Podcast.

00:08:08.140 --> 00:08:10.920
Ich höre einen tollen Hobby-Podcast, Short-Handed News, falls jemand Eishockey mag.

00:08:12.440 --> 00:08:30.320
Genau, und die sind der Meinung, dass sie da auch irgendwie Podcasts machen und sagen, das ist kein Podcast, sondern das hat halt irgendwie eine feste Zeitbegrenzung. Und dann am Schluss fangen die auch immer an so, das müssen wir jetzt noch schnell senden oder jetzt sind wir ja schon fast am Ende mit der Zeit oder so, wo man sich denkt, ja, warum eigentlich? Ihr könnt ja auch einfach weitererzählen.

00:08:30.320 --> 00:08:47.940
Also da ist halt ein großer Unterschied und dann ist auch ein Unterschied, dass die machen das nämlich so, die versuchen das immer irgendwie, ja sozusagen möglichst einfach zu erklären und sie versuchen auch immer die Zuhörer mit einzubeziehen, was sich auch manchmal nicht so richtig super gelungen findet.

00:08:47.940 --> 00:08:48.980
Wir können den nächsten irgendwie

00:08:48.980 --> 00:08:50.560
veröffentlichen auf

00:08:50.560 --> 00:08:53.320
der Seite, wann wir die nächste Podcast-Folge aufnehmen

00:08:53.320 --> 00:08:55.160
und dann sind Anrufer zugelassen.

00:08:56.680 --> 00:08:57.440
Genau, das

00:08:57.440 --> 00:08:58.960
macht natürlich... Live-Schaltung, ja.

00:08:58.960 --> 00:09:00.980
Ich verstehe natürlich, dass es bei der Live-Sendung

00:09:00.980 --> 00:09:02.940
den Reiz enorm erhöht, ja, oder wenn man halt

00:09:02.940 --> 00:09:04.880
irgendwie auf Twitter nebenher

00:09:04.880 --> 00:09:07.000
drüber lästern kann, was die gerade wieder von uns erzählen,

00:09:07.060 --> 00:09:09.200
das erhöht

00:09:09.200 --> 00:09:10.420
den Spaßfaktor deutlich, aber

00:09:10.420 --> 00:09:13.020
ich weiß nicht, ich glaube, das ist

00:09:13.020 --> 00:09:15.000
was anderes, als das ist dann halt eher so Radio

00:09:15.000 --> 00:09:17.140
oder Fernsehen oder eben nicht Podcast,

00:09:17.240 --> 00:09:19.340
weil für mich Podcast ist eher so, das, was ich daran mag,

00:09:19.960 --> 00:09:24.720
ist halt etwas, was man eben in diesen Massenmedien-Kontexten

00:09:24.720 --> 00:09:25.320
halt nicht kriegt.

00:09:25.420 --> 00:09:27.580
Nämlich zum Beispiel, was mich eben bei so einem Thema

00:09:27.580 --> 00:09:29.500
wie jetzt Philosophie oder so eigentlich interessieren würde,

00:09:29.500 --> 00:09:32.440
wäre genau das, was wir versuchen,

00:09:32.620 --> 00:09:34.640
jetzt im Bereich Python zu machen.

00:09:34.860 --> 00:09:38.200
Nämlich Leute, die sich sowieso damit beschäftigen,

00:09:38.260 --> 00:09:39.820
die sich einfach mal so ein bisschen drüber unterhalten,

00:09:39.880 --> 00:09:40.420
was sie da so tun.

00:09:41.460 --> 00:09:43.180
Und das gibt es halt für sowas wie Philosophie nicht.

00:09:43.600 --> 00:09:45.400
Sondern da hast du halt immer einen Moderator

00:09:45.400 --> 00:09:47.680
und dann halt vielleicht einen Studierest oder so.

00:09:48.000 --> 00:09:49.620
Es gibt ja so einen philosophischen Zirkel in der Stadt.

00:09:50.500 --> 00:09:51.260
Ja, vielleicht müssen wir

00:09:51.260 --> 00:09:52.860
da hingehen, keine Ahnung.

00:09:54.100 --> 00:09:55.460
Und dann wird das

00:09:55.460 --> 00:09:57.300
irgendwie aufbereitet und dann ist da irgendwie

00:09:57.300 --> 00:09:59.480
so ein Konzept hin und dann will man bestimmte Punkte abarbeiten.

00:10:00.200 --> 00:10:01.440
Aber ich finde das halt eigentlich

00:10:01.440 --> 00:10:03.360
überhaupt nicht interessant. Und gerade dann immer, wenn

00:10:03.360 --> 00:10:05.600
irgendwie so Zuhörergeschichten da mit reinkommen,

00:10:05.920 --> 00:10:07.280
denke ich mir immer so, jetzt war es gerade spannend,

00:10:07.400 --> 00:10:09.460
aber jetzt können sie da halt nicht weitermachen, weil entweder ist die Zeit vorbei

00:10:09.460 --> 00:10:11.240
oder irgendwie

00:10:11.240 --> 00:10:13.640
müssen sie nochmal auf ein anderes

00:10:13.640 --> 00:10:14.480
Ding eingehen.

00:10:15.340 --> 00:10:18.320
sie geben sich halt auch mal sehr viel

00:10:18.320 --> 00:10:20.340
Mühe, das dann irgendwie so zu verpacken,

00:10:20.420 --> 00:10:22.360
dass es halt möglichst viele Leute erreichen

00:10:22.360 --> 00:10:24.120
kann, was ja auch nichts Schlechtes sein muss, aber

00:10:24.120 --> 00:10:26.100
ich meine, im Grunde, wenn man in einem

00:10:26.100 --> 00:10:28.060
Massenmedium ist, dann ist das natürlich

00:10:28.060 --> 00:10:30.240
das Ziel, irgendwie

00:10:30.240 --> 00:10:32.260
möglichst viele Leute zu erreichen, sonst müsste ich

00:10:32.260 --> 00:10:33.520
da nicht das irgendwie über

00:10:33.520 --> 00:10:36.080
Radiowellen irgendwie nach draußen senden,

00:10:37.260 --> 00:10:38.240
aber ist das eigentlich

00:10:38.240 --> 00:10:40.220
immer das, was man haben will? Da bin ich mir nämlich gar

00:10:40.220 --> 00:10:42.320
nicht so sicher, weil... Also wir haben jetzt einen kleinen Exkurs,

00:10:42.400 --> 00:10:43.580
Jochen redet mit mir über Podcast.

00:10:44.340 --> 00:10:48.200
Sorry, ist ja gerade nur so, weil ich meine, man kann ja auch auf andere Dinge optimieren.

00:10:48.780 --> 00:10:51.960
Mal so zum Beispiel, wie nützlich ist das für die Leute, die das zuhören?

00:10:51.960 --> 00:10:54.260
Es können ja weniger Leute hören, aber für die kann das ja nützlicher sein.

00:10:56.140 --> 00:10:57.820
Aber das geht jetzt eben bei einer Radiosendung nicht.

00:10:57.900 --> 00:11:01.700
Wenn ich jetzt eine Radiosendung mache und sende das halt irgendwie über einen Sendemast übers Land,

00:11:02.420 --> 00:11:08.340
dann, und das ist für 100 Leute sehr, sehr relevant und für alle anderen, die das halt trotzdem abkriegen, super langweilig.

00:11:08.360 --> 00:11:11.800
Ja, also wir machen ja Podcasts und ich hoffe, dass alle unsere Hörer auch tatsächlich wegen Python und hier sind

00:11:11.800 --> 00:11:13.460
und vielleicht auch, weil sie Lust drauf haben oder warum auch immer.

00:11:13.580 --> 00:11:16.680
Also keine Ahnung, kann auch sein, dass ihr unsere Stimme so schön findet.

00:11:17.360 --> 00:11:18.480
Aber zum Einschlafen.

00:11:18.720 --> 00:11:20.260
Ja, das ist eigentlich gar nicht so schlechte Idee.

00:11:20.860 --> 00:11:22.360
Nur nicht beim Autofahren und Einschlafen kombiniert.

00:11:22.720 --> 00:11:23.140
Aber naja.

00:11:23.820 --> 00:11:29.800
Aber ja, also ich meine, das ist halt etwas, oder überhaupt bei Internetgeschichten finde ich das immer super, dass man das ja eigentlich tun kann mal.

00:11:29.940 --> 00:11:34.460
Man kann ja jetzt einfach sagen, okay, ist mir egal, ist nicht für jeden relevant, sondern für nur ein paar Leute.

00:11:34.460 --> 00:11:38.540
Ja, aber ich glaube, weil wir eigentlich mit der Frage eingestiegen sind, wie viel wir tief erklären.

00:11:38.700 --> 00:11:58.480
Also erklärt uns doch mal gerne mit, wie viel ihr denn erklärt haben wollt, ob ich das zu viel Erklärung ist, zu wenig Erklärung ist und ja, ich glaube, wenn ihr Begriffsfragen habt, wissen wollt, was CSS ist, Cascading Style Sheets im Übrigen, da war eine Frage, dann erklären wir euch das gerne nochmal oder ihr schaut das dann kurz nach, also wie man dann das Internet betrachtbar macht.

00:11:58.640 --> 00:12:07.160
Ja, Jochen, aber jetzt hast du so viel über Meta geredet, dass unsere Absprungquote wahrscheinlich wieder in Höhen geschnallt ist. Wir fangen jetzt an mit Volltextsuche.

00:12:08.300 --> 00:12:09.740
Ja, Volltextsuche, voll gut.

00:12:10.280 --> 00:12:12.100
Was ist das überhaupt, Volltextsuche?

00:12:12.240 --> 00:12:14.080
Also wir wollen ja ganz Basis anfangen und erklären.

00:12:14.520 --> 00:12:16.000
Was macht eine Volltextsuche?

00:12:16.120 --> 00:12:18.100
Warum heißt es Volltext und was ist daran Suche?

00:12:18.340 --> 00:12:20.420
Also habe ich einen Text und ich gebe

00:12:20.420 --> 00:12:22.340
eine Suchmaske einen Begriff ein und der

00:12:22.340 --> 00:12:24.620
spuckt mir aus dem gesamten

00:12:24.620 --> 00:12:26.320
Text alle Treffer aus oder was ist das?

00:12:26.800 --> 00:12:28.000
Ja, nee, also...

00:12:28.000 --> 00:12:28.460
Nein, okay.

00:12:29.600 --> 00:12:31.700
Also ich meine, das ist auch ein Suchproblem,

00:12:32.000 --> 00:12:34.140
wenn man versucht, in einem Text irgendwas zu finden.

00:12:36.720 --> 00:12:37.160
Aber...

00:12:37.160 --> 00:12:38.720
Volltextsucher will das über viele Texte finden.

00:12:39.120 --> 00:12:41.080
Ja, also der entscheidende

00:12:41.080 --> 00:12:43.040
Unterschied ist eigentlich, dass man halt Dokumente hat

00:12:43.040 --> 00:12:44.860
bei einer Volltextsuchmaschine.

00:12:45.040 --> 00:12:47.160
Indizierbare Dokumente, also deren Inhalt du kennst

00:12:47.160 --> 00:12:49.580
und dann möchtest du durch eine Masse von Dokumenten

00:12:49.580 --> 00:12:50.760
bestimmte Stichworte

00:12:50.760 --> 00:12:51.460
suchen.

00:12:54.040 --> 00:12:55.200
Ja, also man hat

00:12:55.200 --> 00:12:56.520
eine Anfrage oder

00:12:56.520 --> 00:12:59.180
eine Query und da möchte man halt die Sachen

00:12:59.180 --> 00:13:01.220
finden, die da relevant

00:13:01.220 --> 00:13:03.100
sind. Das Paper, das du benutzt, damit du

00:13:03.100 --> 00:13:05.180
deine Hausarbeit nicht zweimal schreiben musst

00:13:05.180 --> 00:13:07.300
oder einfach die nehmen kannst, die du findest.

00:13:08.560 --> 00:13:09.240
Ja, ich habe auch

00:13:09.240 --> 00:13:11.160
überlegt, wie man das am besten, ich weiß

00:13:11.160 --> 00:13:12.940
nicht, ob die Analogie oder wie weit die trägt, aber

00:13:12.940 --> 00:13:15.040
wie man sich das vorstellen kann, ist halt

00:13:15.040 --> 00:13:17.200
wie bei einem Index in einem Buch.

00:13:18.440 --> 00:13:18.680
Denke ich.

00:13:18.720 --> 00:13:19.220
Ein Glossar.

00:13:20.180 --> 00:13:22.480
Nicht Glossar, erklärt ja die Begriffe, aber

00:13:22.480 --> 00:13:24.740
ein Index tatsächlich, gibt es oft in Büchern.

00:13:24.740 --> 00:13:26.460
Ja, okay, da geht es dann noch zu welchem Hit,

00:13:26.720 --> 00:13:27.720
welche Seile.

00:13:27.940 --> 00:13:30.740
Einfach so eine Liste der Wörter und dann auf welchen Seiten

00:13:30.740 --> 00:13:32.380
die Wörter vorkommen, also das ist immer das Wort.

00:13:32.760 --> 00:13:34.480
Ich habe das sogar einmal in Kombination gesehen, glaube ich,

00:13:34.520 --> 00:13:36.500
ein Glossar kombiniert mit der Erklärung und dann

00:13:36.500 --> 00:13:38.460
die Hinweise, wo es auftaucht. Sehr schöne Sache.

00:13:38.560 --> 00:13:39.880
Kann man wahrscheinlich auch machen, aber

00:13:39.880 --> 00:13:42.480
genau, dann hast du halt eine kommaseparierte Liste

00:13:42.480 --> 00:13:44.020
der Seiten, auf denen das vorkommt.

00:13:44.140 --> 00:13:44.820
Wenn das jetzt auf den

00:13:44.820 --> 00:13:48.360
Volltext-Suche-Dings

00:13:48.360 --> 00:13:50.400
Anwendungsfall übertragen wäre, wäre das halt so, dass

00:13:50.400 --> 00:13:52.460
die Seiten in dem Buch wären halt die Dokumente,

00:13:52.600 --> 00:13:54.480
die indiziert werden und der Index

00:13:54.480 --> 00:13:55.980
in dem Buch ist tatsächlich dann halt so

00:13:55.980 --> 00:13:58.020
wie ein Volltext-Suchindex,

00:13:58.220 --> 00:14:00.520
der man auch, ist sehr ähnlich zu dem,

00:14:00.580 --> 00:14:01.740
was man dann tatsächlich auch verwendet.

00:14:01.740 --> 00:14:03.600
Und was hat das jetzt mit Python zu tun, Jochen?

00:14:04.120 --> 00:14:09.420
Ja, also, oh, das ist eine gute Frage.

00:14:09.460 --> 00:14:10.300
Jetzt habe ich ihn erwischt.

00:14:11.140 --> 00:14:11.960
Doch, hat es aber.

00:14:12.820 --> 00:14:16.360
Weil man oft ja auch Suchmaschinen irgendwie verwendet von Python aus

00:14:16.360 --> 00:14:20.220
oder halt ab und zu auch mal Suchmaschinen in Python implementiert.

00:14:20.480 --> 00:14:23.640
Meiner Ansicht nach implementiert man viel zu wenig Suchmaschinen,

00:14:23.820 --> 00:14:25.820
es sind viel zu wenig Volltext-Suchmaschinen in Python implementiert.

00:14:26.240 --> 00:14:27.800
Schniff, aber so ist es halt.

00:14:28.840 --> 00:14:31.960
Aber zumindest, dass man die irgendwie ansprechen muss

00:14:31.960 --> 00:14:33.480
und dann irgendwas mit den Ergebnissen macht,

00:14:33.520 --> 00:14:35.320
das hat man ja relativ oft. Welche, was sind denn

00:14:35.320 --> 00:14:37.640
Suchmaschinen? Musst du erstmal Beispiele geben von Volltextus-Maschinen,

00:14:37.700 --> 00:14:39.220
die vielleicht man kennt oder auch nicht, oder?

00:14:40.840 --> 00:14:41.640
Also, da gibt's

00:14:41.640 --> 00:14:43.300
halt unterschiedliche, ja, es gibt natürlich

00:14:43.300 --> 00:14:45.400
die große, das große Google,

00:14:45.540 --> 00:14:47.300
die allwissende Müllhalde, die wir alle

00:14:47.300 --> 00:14:48.980
kennen, vielleicht

00:14:48.980 --> 00:14:51.500
mit den entsprechenden Vorgängern, so weiß ich

00:14:51.500 --> 00:14:53.200
nicht, Excite, Alta Vista, Hotbot.

00:14:54.060 --> 00:14:55.520
Ach, Alta Vista, das waren noch Zeiten.

00:14:55.860 --> 00:14:56.020
Ja.

00:14:57.520 --> 00:14:57.880
Und

00:14:57.880 --> 00:15:01.580
das sind halt schon relativ fortgeschrittene

00:15:01.580 --> 00:15:03.540
Dinger, also gerade Google ist halt, oder

00:15:03.540 --> 00:15:05.660
auch die anderen modernen, die es halt gibt, Bing oder

00:15:05.660 --> 00:15:07.780
was gibt es da noch?

00:15:08.700 --> 00:15:09.320
Gibt es eigentlich?

00:15:09.840 --> 00:15:11.660
Du hast ein Microsoft-Foto erwähnt, erneut.

00:15:12.820 --> 00:15:13.580
Die haben aber

00:15:13.580 --> 00:15:15.240
immer noch keinen Contract leider bekommen.

00:15:16.640 --> 00:15:16.880
Oder

00:15:16.880 --> 00:15:19.140
A9 von Amazon,

00:15:19.800 --> 00:15:20.360
wo auch einer

00:15:20.360 --> 00:15:22.480
der Experten,

00:15:22.680 --> 00:15:24.220
Udi Member,

00:15:24.220 --> 00:15:26.220
hat da lange...

00:15:26.220 --> 00:15:28.220
Also ja, also die Dinger sind halt

00:15:28.220 --> 00:15:30.120
relativ fortgeschritten und haben halt,

00:15:30.180 --> 00:15:31.440
sind halt relativ einfach gestartet.

00:15:31.580 --> 00:15:48.700
Es gibt das Ganze jetzt auch als Open-Source-Software, die man verwenden kann. Oder es gibt kommerzielle Software, die das macht. Wobei ich denke, dass heutzutage wahrscheinlich die allermeisten irgendwas Open-Source-mäßiges verwenden werden, wenn sie das denn jetzt selber haben wollen für ihre Webseite zum Beispiel.

00:15:48.700 --> 00:15:59.140
Also das ist, denke ich, ein ganz häufiger Anwendungsfall, dass du halt eine Webseite hast und möchtest halt eine Suchfunktionalität anbieten. Und ja, dann muss das halt irgendwie irgendwo passieren.

00:15:59.140 --> 00:16:11.360
Und das, was da sozusagen der Platzhirsch ist, ist eine Java-Bibliothek namens Lucene.

00:16:12.020 --> 00:16:15.200
Das ist von Doug Cutting geschrieben worden.

00:16:15.320 --> 00:16:17.080
Der hat damit angefangen 1997 oder so.

00:16:17.140 --> 00:16:19.560
Der hat irgendwie mal gearbeitet bei Excite, meine ich.

00:16:21.720 --> 00:16:35.460
Und hat dann irgendwann, da habe ich irgendwo mal einen Talk gehört, hat er so, ja, das war so 97, da hat er so das Gefühl, die Dotcom-Bubble, die platzt jetzt demnächst.

00:16:36.020 --> 00:16:55.160
Hat noch ein bisschen gedauert, aber war gar nicht so schlecht. Und man hat sich dann sozusagen einen Teil der Woche, ich weiß nicht, ein oder zwei Tage Homeoffice setzen lassen und dann an eben der neuen Suchmaschine gebastelt.

00:16:55.160 --> 00:17:10.400
Und als dann Exide tatsächlich irgendwie so ein bisschen die Ohren angelegt hat, hat er das halt dann Open-Source, eine Open-Source-Geschichte überführt, auch da ohne groß drüber nachzudenken, was man da jetzt macht.

00:17:10.400 --> 00:17:22.240
Er hatte, glaube ich, die erste Version sogar irgendwie unter der GPL, weil er dachte, naja gut, wenn man Open-Source macht, macht man halt GPL veröffentlicht. Das war aber dann nicht so cool. Leute haben sich beschwert, dass sie das dann nicht so richtig verwenden können und so.

00:17:23.300 --> 00:17:26.880
Und darauf ist auch, dass die Apache Software Foundation

00:17:26.880 --> 00:17:29.740
hat gerade angefangen, irgendwie dann so unter ihrem Schirm

00:17:29.740 --> 00:17:35.120
Projekte aufzunehmen und denen so ein bisschen Struktur zu geben.

00:17:35.740 --> 00:17:37.480
Und weil man das ja noch nie gemacht hat,

00:17:37.540 --> 00:17:39.060
weiß man ja nicht genau, was man da alles machen muss.

00:17:39.640 --> 00:17:42.900
Mailing-Listen und wie organisiert man diese ganze Entwicklungsgeschichte überhaupt.

00:17:43.580 --> 00:17:45.980
Und er ist dann irgendwie mit dem Lucene-Projekt

00:17:45.980 --> 00:17:49.240
dann da unter diesen Apache-Schirm der Apache Software Foundation gekommen,

00:17:49.620 --> 00:17:50.920
hat dann auch die Apache-License übernommen

00:17:50.920 --> 00:17:53.080
und er meinte, seitdem hat sich nie wieder

00:17:53.080 --> 00:17:55.080
jemand über die Lizenz beschwert und es funktioniert.

00:17:55.200 --> 00:17:56.700
Also es ist halt eine sehr liberale Lizenz, so

00:17:56.700 --> 00:17:58.400
PSD-artig, MIT-artig.

00:17:58.580 --> 00:18:00.220
Lizenz müssen wir auch nochmal neu entdecken.

00:18:01.660 --> 00:18:02.700
Aber im Grunde heißt,

00:18:03.200 --> 00:18:05.040
kann man mehr oder weniger machen, was man

00:18:05.040 --> 00:18:06.540
will und

00:18:06.540 --> 00:18:09.160
ja, halt auch im kommerziellen

00:18:09.160 --> 00:18:10.680
Kontext verwenden oder in

00:18:10.680 --> 00:18:13.000
Software, die man halt irgendwo hinschippt. Das ging jetzt mit

00:18:13.000 --> 00:18:14.120
der GPL zum Beispiel eher nicht.

00:18:16.440 --> 00:18:16.600
Ja.

00:18:17.280 --> 00:18:18.940
Und dann ist

00:18:18.940 --> 00:18:20.500
diese Bibliothek relativ erfolgreich.

00:18:20.920 --> 00:18:23.000
geworden und heute ist das halt

00:18:23.000 --> 00:18:24.860
das Ding, was alle verwenden und

00:18:24.860 --> 00:18:26.920
eigentlich das Ding, was unter

00:18:26.920 --> 00:18:28.620
allen bekannten

00:18:28.620 --> 00:18:30.600
Suchmaschinen,

00:18:30.840 --> 00:18:32.940
Open-Source-Suchmaschinen-Implementationen irgendwie darunter

00:18:32.940 --> 00:18:34.860
liegt. Also die beiden größten Dinge,

00:18:34.940 --> 00:18:36.100
die man heute so kennt, sind halt

00:18:36.100 --> 00:18:38.580
Solar und Elasticsearch.

00:18:40.980 --> 00:18:42.320
Ja, und das Spice-Lucin.

00:18:43.880 --> 00:18:44.780
Man kann das auch

00:18:44.780 --> 00:18:46.280
aus Python heraus direkt verwenden,

00:18:46.540 --> 00:18:47.400
mit PyLucin,

00:18:48.640 --> 00:18:50.740
aber das ist so ein bisschen eklig. Also das ist

00:18:50.740 --> 00:18:52.960
halt, das macht

00:18:52.960 --> 00:18:54.300
halt direkt eine Anbindung an

00:18:54.300 --> 00:18:56.320
Java und

00:18:56.320 --> 00:19:00.720
Hört sich komisch an. Ja, also

00:19:00.720 --> 00:19:02.700
geht schon, aber will man vielleicht auch nicht verwenden.

00:19:02.860 --> 00:19:04.460
Eher ist wahrscheinlich die

00:19:04.460 --> 00:19:06.320
richtige Art, wo man das dann

00:19:06.320 --> 00:19:08.560
trennt, irgendwie eine API oder so.

00:19:08.660 --> 00:19:10.460
Und das machen Solr und Elasticsearch auch so.

00:19:11.260 --> 00:19:12.640
Also meistens hast du dann

00:19:12.640 --> 00:19:14.620
Elasticsearch oder Solr, vielleicht

00:19:14.620 --> 00:19:16.680
Solr Cloud auf irgendeinem Cluster laufen oder weiß nicht

00:19:16.680 --> 00:19:18.600
und auf deinem Hadoop-Cluster

00:19:18.600 --> 00:19:20.680
am besten. Und dann connectest du

00:19:20.680 --> 00:19:22.620
dahin und stellst

00:19:22.620 --> 00:19:23.540
da deine Suchquerys

00:19:23.540 --> 00:19:25.260
an Fragen.

00:19:26.480 --> 00:19:28.420
Ja, genau, so sieht es halt

00:19:28.420 --> 00:19:30.540
momentan aus, aber

00:19:30.540 --> 00:19:32.140
das ist natürlich, also okay,

00:19:32.240 --> 00:19:34.500
es ist das Verbreitetste, das, was irgendwie alle, die meisten

00:19:34.500 --> 00:19:36.380
Leute verwenden, ist aber nicht das Einzige. Es gibt noch

00:19:36.380 --> 00:19:38.520
eine Menge andere Dinge und andere

00:19:38.520 --> 00:19:39.820
Software, die das halt auch kann.

00:19:42.540 --> 00:19:42.940
Andere

00:19:42.940 --> 00:19:46.860
Open-Source-Soupmaschinen

00:19:46.860 --> 00:19:48.120
wären sowas wie, es gibt noch

00:19:48.120 --> 00:19:50.500
Xapien, obwohl ich weiß nicht, ob es das tatsächlich noch gibt,

00:19:50.560 --> 00:19:53.280
Das war irgendwas in C++, glaube ich, nicht mehr relevant.

00:19:53.460 --> 00:19:54.920
Sphinx gibt es noch.

00:19:55.240 --> 00:20:00.220
Das ist insofern ganz halbwegs relevant noch,

00:20:00.280 --> 00:20:02.180
weil es halt eine enge Verbindung zu MySQL hat.

00:20:02.660 --> 00:20:04.920
Und da gibt es halt irgendwie eine...

00:20:04.920 --> 00:20:05.920
Heißt das MariaDB?

00:20:06.340 --> 00:20:08.660
Oder genau, wenn man heute MySQL sagt,

00:20:08.740 --> 00:20:09.780
dann meint man eigentlich immer MariaDB.

00:20:10.560 --> 00:20:13.380
Und da gibt es halt irgendwie relativ ausgefuchste Mechanismen,

00:20:13.440 --> 00:20:14.800
wie man das halt ineinander integriert.

00:20:14.800 --> 00:20:18.940
Und halt, wenn man die eingebaute Volltextsuche von MySQL

00:20:18.940 --> 00:20:21.520
nicht mehr verwenden will oder wenn man da rausgewachsen ist,

00:20:21.580 --> 00:20:23.300
dann kann man da irgendwie relativ leicht zwingend dran bauen.

00:20:24.440 --> 00:20:25.500
Ja, ähm...

00:20:25.500 --> 00:20:27.060
Ja, da musst du gleich noch ein bisschen mehr zu sagen.

00:20:27.180 --> 00:20:29.400
Also diese Architektur, also wenn du sagst, man hackt das jetzt einfach

00:20:29.400 --> 00:20:31.000
so mal eben kurz in einen Hadoop,

00:20:31.380 --> 00:20:32.540
ich sag mal, auf was bitte ist denn das,

00:20:32.640 --> 00:20:35.420
und was das dann überhaupt macht, wo die

00:20:35.420 --> 00:20:37.240
Dokumente liegen und wie das dann überhaupt

00:20:37.240 --> 00:20:38.840
so richtig funktioniert und so, das...

00:20:38.840 --> 00:20:41.380
Ja, äh, genau,

00:20:41.540 --> 00:20:42.320
genau, genau.

00:20:43.900 --> 00:20:45.400
Ich überlege gerade, ach genau, es gibt eine

00:20:45.400 --> 00:20:47.320
in Python implementierte

00:20:47.320 --> 00:20:50.280
Volltext-Suchmaschine

00:20:50.280 --> 00:20:50.980
namens Woosh.

00:20:51.980 --> 00:20:52.460
Woosh.

00:20:54.800 --> 00:20:56.180
Die sich auch

00:20:56.180 --> 00:20:58.020
sehr stark an Lucene irgendwie so von der

00:20:58.020 --> 00:20:59.300
Struktur intern anlehnt, aber

00:20:59.300 --> 00:21:01.700
ist halt in Python geschrieben, ist nicht so schnell,

00:21:02.080 --> 00:21:03.660
alles ein bisschen langsam, aber

00:21:03.660 --> 00:21:06.200
kann man auch mal benutzen, ist irgendwie ganz nett

00:21:06.200 --> 00:21:08.080
und dann, also lass mal überlegen, gibt es noch

00:21:08.080 --> 00:21:10.020
irgendwas, was Volltext-Suche kann, was ich jetzt,

00:21:10.240 --> 00:21:11.920
also was das irgendwie offiziell

00:21:11.920 --> 00:21:14.220
hauptsächlich

00:21:14.220 --> 00:21:15.660
tut und was ich noch nicht genannt habe.

00:21:17.020 --> 00:21:18.020
Ja, also wenn jemandem noch was

00:21:18.020 --> 00:21:18.320
einfällt.

00:21:21.300 --> 00:21:22.080
Und dann gibt's

00:21:22.080 --> 00:21:23.440
halt noch Volltext-Such

00:21:23.440 --> 00:21:25.820
Features in den meisten Datenbanken.

00:21:26.660 --> 00:21:28.000
Und das ist natürlich auch nett, weil

00:21:28.000 --> 00:21:29.940
meistens hat man ja

00:21:29.940 --> 00:21:32.000
eh die Daten, in denen man

00:21:32.000 --> 00:21:33.880
irgendwas sucht, sowieso schon in der Datenbank

00:21:33.880 --> 00:21:35.780
liegen. Und eben wenn man

00:21:35.780 --> 00:21:37.600
sowas wie Elasticsearch-Tooler oder so

00:21:37.600 --> 00:21:39.820
verwenden, dann muss man halt irgendwie die Daten

00:21:39.820 --> 00:21:41.760
aus der Datenbank da reinkriegen. Und

00:21:41.760 --> 00:21:42.400
wenn man jetzt

00:21:42.400 --> 00:21:45.740
ein Suchergebnis bekommt von denen, dann muss man irgendwie wieder

00:21:45.740 --> 00:21:47.860
zur Datenbank und dann nochmal wieder andere Informationen

00:21:47.860 --> 00:21:49.180
nachher ausholen. Das ist so ein bisschen

00:21:49.180 --> 00:21:51.700
umständlich. Das ist ja eigentlich schön, wenn das direkt

00:21:51.700 --> 00:21:53.860
in der Datenbank drin wäre. Und ja, die meisten

00:21:53.860 --> 00:21:55.680
Datenbanken bieten da halt auch

00:21:55.680 --> 00:21:57.680
Geschichten, wobei

00:21:57.680 --> 00:21:58.920
das halt unterschiedlich

00:21:58.920 --> 00:22:01.940
fertig oder unterschiedlich

00:22:01.940 --> 00:22:02.740
komplett

00:22:02.740 --> 00:22:04.440
Feature-Set ist.

00:22:06.160 --> 00:22:07.460
Postgres hat relativ viel

00:22:07.460 --> 00:22:09.680
Volltext-Fähigkeiten.

00:22:10.980 --> 00:22:11.880
SQLite hat relativ

00:22:11.880 --> 00:22:13.600
viel. Das ist auch sehr, sehr interessant.

00:22:15.280 --> 00:22:17.740
MySQL hat nicht so

00:22:17.740 --> 00:22:18.200
ganz so viele.

00:22:20.340 --> 00:22:21.700
Aber so ein bisschen was geht auf jeden Fall

00:22:21.700 --> 00:22:21.920
auch.

00:22:23.220 --> 00:22:23.860
Ja, und

00:22:23.860 --> 00:22:27.820
das ist auch,

00:22:28.260 --> 00:22:29.120
also ehrlich gesagt,

00:22:29.280 --> 00:22:31.200
was ich präferieren würde momentan,

00:22:31.320 --> 00:22:33.440
gerade wenn man anfängt, dann lässt man das eher

00:22:33.440 --> 00:22:34.120
die Daten machen.

00:22:34.420 --> 00:22:37.580
Dann fängt man nicht

00:22:37.580 --> 00:22:39.320
damit an, direkt irgendwie ein Elasticsearch

00:22:39.320 --> 00:22:40.480
daneben zu stellen.

00:22:40.700 --> 00:22:43.500
Ab wann macht man das? Ab welcher Größe oder welches Suchvolumen geht es da?

00:22:44.000 --> 00:22:46.380
Das kann man so schwer beantworten.

00:22:46.800 --> 00:22:48.020
Also, aber...

00:22:48.020 --> 00:22:50.020
Weil meine Postcards jetzt auf 0,x mehr

00:22:50.020 --> 00:22:51.480
die Antwort auf meine Frage geben können.

00:22:51.480 --> 00:22:53.540
Genau, dann ist es...

00:22:53.540 --> 00:22:55.380
Das heißt, ich bräuchte schon ein Dokumentenarchiv,

00:22:55.440 --> 00:22:56.920
was ich irgendwo hinlege mit

00:22:56.920 --> 00:22:59.500
mehreren hunderttausend Dokumenten,

00:22:59.700 --> 00:23:01.500
durch die ich jetzt durchiterieren

00:23:01.500 --> 00:23:03.340
müsste bei der Suche,

00:23:03.420 --> 00:23:04.860
um zu finden, was es da so gibt.

00:23:05.680 --> 00:23:07.440
Und da muss dann ein

00:23:07.440 --> 00:23:09.580
Lusin

00:23:09.580 --> 00:23:11.480
drauf springen, damit es

00:23:11.480 --> 00:23:13.540
da noch einigermaßen performant

00:23:13.540 --> 00:23:14.800
die Ergebnisse rausbekommt.

00:23:16.220 --> 00:23:17.420
Ne, das ist auch, also

00:23:17.420 --> 00:23:19.680
ich würde eher

00:23:19.680 --> 00:23:21.600
sowas sagen, es hängt halt von der Maschine auch ab.

00:23:22.160 --> 00:23:23.120
Also wenn, sobald

00:23:23.120 --> 00:23:25.520
was halt in Postgres relativ schnell

00:23:25.520 --> 00:23:27.440
relativ groß wird, sind halt die Indizes.

00:23:28.760 --> 00:23:29.840
Also super optimal

00:23:29.840 --> 00:23:31.280
sind die halt nicht. Also

00:23:31.280 --> 00:23:33.420
da ist schon einiges optimiert, aber

00:23:33.420 --> 00:23:35.580
die werden halt relativ schnell relativ groß und wenn die

00:23:35.580 --> 00:23:37.640
zum Beispiel so groß sind, dass sie nicht mehr in den Hauptspeicher passen, dann

00:23:37.640 --> 00:23:38.380
haben wir ein Problem.

00:23:40.140 --> 00:23:41.500
Und das geht wahrscheinlich

00:23:41.500 --> 00:23:43.440
dann mit Leasiden oder beziehungsweise halt

00:23:43.440 --> 00:23:45.540
Solar Cloud oder Elasticsearch

00:23:45.540 --> 00:23:47.340
oder so dann besser, aber da ist man schon bei

00:23:47.340 --> 00:23:49.020
wirklich vielen, vielen Dokumenten wahrscheinlich.

00:23:49.260 --> 00:23:51.180
Wie viele Hauptspeicher hat man denn dann, die man braucht,

00:23:51.280 --> 00:23:53.340
für welche Dokumentengröße hast du da so Werte?

00:23:53.780 --> 00:23:55.100
Ne, weiß ich nicht, aber

00:23:55.100 --> 00:23:57.360
keine Ahnung, kann sein,

00:23:57.780 --> 00:23:59.640
also kommt halt auch drauf an, wie groß die Dokumente

00:23:59.640 --> 00:24:00.900
sind, aber

00:24:00.900 --> 00:24:03.440
ich meine, heutige Datenbanken haben viele Hauptspeicher

00:24:03.440 --> 00:24:24.430
Und bis man da irgendwie, also ich weiß nicht, wie oft ich einen Volltext-Index gesehen habe, der größer als ein paar Gigabyte war, das kommt jetzt gar nicht so oft vor, selbst wenn du Millionen Dokumente hast. Also es ist, glaube ich, nicht so oft, dass einem das sofort auf den Fuß fällt, sondern wenn man das Problem bekommt, dann…

00:24:24.430 --> 00:24:25.970
Das heißt, mit den neuen Maschinen, wenn man

00:24:25.970 --> 00:24:27.850
dann eine größere Maschine hinstellt, sollte das auch

00:24:27.850 --> 00:24:29.550
mit dem Indexieren von Postgres dann

00:24:29.550 --> 00:24:31.990
mit 64 GB über mehrere Millionen Dokumente

00:24:31.990 --> 00:24:33.070
auch ein Problem sein.

00:24:33.070 --> 00:24:33.630
Auf jeden Fall.

00:24:35.130 --> 00:24:36.730
Und ja.

00:24:41.290 --> 00:24:42.810
Genau, es gibt dann noch einen interessanten,

00:24:42.970 --> 00:24:44.670
es gibt noch ein Ding, SomboDB oder so

00:24:44.670 --> 00:24:45.570
ist das, glaube ich.

00:24:45.770 --> 00:24:48.690
Ich habe es noch nicht verwendet. Da kann man dann auch

00:24:48.690 --> 00:24:50.790
das direkt in die Datenbank integrieren, sodass man

00:24:50.790 --> 00:24:52.730
halt nur die Anfrage an die Datenbank

00:24:52.730 --> 00:24:53.790
stellt und die dann halt

00:24:53.790 --> 00:24:55.610
weil man ja kann auch Plugins

00:24:55.610 --> 00:24:57.350
für Postgres und so schreiben, die macht dann halt

00:24:57.350 --> 00:24:59.430
eine Anfrage auf irgendwie ein Elasticsearch-Cluster

00:24:59.430 --> 00:24:59.890
oder so,

00:25:01.250 --> 00:25:03.770
sodass man halt von der Applikationsseite

00:25:03.770 --> 00:25:04.930
aus gar nicht merkt, dass man

00:25:04.930 --> 00:25:07.410
inzwischen die Suchfunktionalität halt

00:25:07.410 --> 00:25:09.490
irgendwie woanders hin ausgelagert hat, was natürlich

00:25:09.490 --> 00:25:11.530
auch ganz praktisch wäre. Also es

00:25:11.530 --> 00:25:13.430
gibt ja eine ganze Menge Dinge, die man tun kann, aber

00:25:13.430 --> 00:25:15.370
ich sag mal, für den Hausgebrauch und für die allermeisten

00:25:15.370 --> 00:25:16.790
Webseiten da draußen dürfte

00:25:16.790 --> 00:25:19.270
das, was in den Datenbanken

00:25:19.270 --> 00:25:21.150
eingebaut ist, schon eher

00:25:21.150 --> 00:25:23.310
reichen und ich denke auch

00:25:23.310 --> 00:25:25.190
nicht, dass das wirklich das ist, wo die meisten

00:25:25.190 --> 00:25:26.990
Probleme kriegen. Die meisten Leute kriegen nicht

00:25:26.990 --> 00:25:28.250
sofort Probleme mit der Skalierung,

00:25:29.570 --> 00:25:30.950
sondern eher bei so

00:25:30.950 --> 00:25:33.130
grundsätzlichen Fragestellungen

00:25:33.130 --> 00:25:35.250
und das ist auch...

00:25:35.250 --> 00:25:37.130
Was sind grundsätzliche Fragestellungen?

00:25:38.150 --> 00:25:39.350
Ja, also zum Beispiel

00:25:39.350 --> 00:25:41.050
wie macht man das

00:25:41.050 --> 00:25:42.890
jetzt eigentlich, wenn man eine Suchmaske

00:25:42.890 --> 00:25:43.910
auf einer Webseite hat?

00:25:44.170 --> 00:25:48.370
Wie geht das mit der Relevanz?

00:25:49.070 --> 00:25:50.730
Wie kriege ich das eigentlich raus, ob da

00:25:50.730 --> 00:25:52.010
gute Ergebnisse kommen?

00:25:52.730 --> 00:25:54.730
Wie mache ich das? Und da ist

00:25:54.730 --> 00:25:55.790
auch leider die Antwort,

00:25:56.350 --> 00:25:58.690
es hängt davon ab und das ist je nach

00:25:58.690 --> 00:26:00.270
Anwendungsfall sehr unterschiedlich.

00:26:00.890 --> 00:26:01.890
Okay, jetzt wird es interessant.

00:26:02.530 --> 00:26:04.330
Also ich möchte suchen, auch ranken,

00:26:04.470 --> 00:26:06.590
das heißt die Trefferquote

00:26:06.590 --> 00:26:08.650
erhöhen, die Wahrscheinlichkeit, dass das

00:26:08.650 --> 00:26:10.630
Dokument dem entspricht, was ich gerade

00:26:10.630 --> 00:26:12.590
haben möchte. Genau, wenn Leute

00:26:12.590 --> 00:26:14.390
da irgendwas eingeben, irgendeine Query eingeben,

00:26:14.510 --> 00:26:16.530
dann möchtest du, dass sie halt normalerweise oder dass sie

00:26:16.530 --> 00:26:18.590
halt in möglichst vielen Fällen halt irgendwie relevante

00:26:18.590 --> 00:26:20.730
Ergebnisse haben.

00:26:21.330 --> 00:26:22.670
Ja, okay. Und wie das funktioniert,

00:26:22.730 --> 00:26:23.650
Das ist natürlich jetzt sehr spannend.

00:26:24.330 --> 00:26:25.850
Ja, also

00:26:25.850 --> 00:26:27.910
wie, ich weiß nicht,

00:26:27.950 --> 00:26:29.990
also wie so ein Index funktioniert,

00:26:30.050 --> 00:26:31.410
das halt im Grunde, wenn ich mir vorstelle,

00:26:31.950 --> 00:26:32.930
das wäre jetzt eine,

00:26:34.810 --> 00:26:36.250
ich hätte jetzt eben

00:26:36.250 --> 00:26:38.090
dieses Buch mit dem Index hinten drin und ich würde

00:26:38.090 --> 00:26:39.590
jetzt wissen wollen, okay,

00:26:40.490 --> 00:26:44.110
wo kommt denn das Wort,

00:26:44.110 --> 00:26:45.410
was könnte ich denn für ein Wort nehmen?

00:26:45.990 --> 00:26:46.350
Keyword.

00:26:47.870 --> 00:26:49.530
Keyword und Python.

00:26:49.850 --> 00:26:51.970
Und Python, ja, wo kommt denn das überall vor?

00:26:52.110 --> 00:26:53.610
und ich hätte gerne alle Seiten, auf denen das vorkommt,

00:26:54.070 --> 00:26:55.450
dann gehe ich einfach in den Index,

00:26:56.010 --> 00:26:59.730
suche halt das Wort Keyword,

00:27:00.430 --> 00:27:02.070
nehme die Seiten, die Nummern,

00:27:02.830 --> 00:27:03.870
packe das in ein Set

00:27:03.870 --> 00:27:09.350
und nehme das gleiche Set der Seiten von Python.

00:27:10.310 --> 00:27:12.410
Und jetzt kann ich da halt zwei Dinge machen.

00:27:12.510 --> 00:27:13.410
Ich könnte es entweder schneiden,

00:27:13.410 --> 00:27:16.330
ich könnte sagen, ich hätte gerne alle Seiten,

00:27:16.450 --> 00:27:17.330
in denen beides vorkommt,

00:27:17.550 --> 00:27:20.410
also die Schnittmenge der beiden Mengen.

00:27:21.530 --> 00:27:23.510
oder ich könnte sagen, ich nehme die Vereinigung,

00:27:24.390 --> 00:27:25.650
also entweder das,

00:27:25.950 --> 00:27:27.550
wo Python drin vorkommt oder wo Keyword

00:27:27.550 --> 00:27:29.530
drin vorkommt, die Seiten hätte ich gerne und kriege dann einfach

00:27:29.530 --> 00:27:31.590
alle. Und das ist ja auch das, was

00:27:31.590 --> 00:27:33.450
man sozusagen in, ich glaube, Google hat da

00:27:33.450 --> 00:27:35.470
eine Syntax für, das ist übrigens auch bei Postgres,

00:27:35.550 --> 00:27:36.310
kann man

00:27:36.310 --> 00:27:39.310
die Syntax, die Google verwendet,

00:27:40.390 --> 00:27:41.870
TS2,

00:27:42.150 --> 00:27:43.230
wie heißt das, 2Query,

00:27:43.590 --> 00:27:45.370
irgendwas, 2WebQuery, ach, ich weiß nicht mehr, wie die

00:27:45.370 --> 00:27:47.490
Postgres-Funktion heißt, die übergibt man einfach

00:27:47.490 --> 00:27:49.510
diesen Query-String, den man bekommen hat und dann

00:27:49.510 --> 00:27:50.570
macht die daraus eine Anfrage

00:27:50.570 --> 00:27:52.470
nach der gleichen

00:27:52.470 --> 00:27:54.390
Logik, sodass man halt auch und oder

00:27:54.390 --> 00:27:55.330
oder verwenden kann.

00:27:58.310 --> 00:27:59.950
Ja, und

00:27:59.950 --> 00:28:04.430
genau, das ist

00:28:04.430 --> 00:28:06.230
eigentlich im Grunde das, was halt so eine Suchmaschine macht.

00:28:06.330 --> 00:28:07.310
Das Problem ist jetzt natürlich,

00:28:07.930 --> 00:28:10.310
die Seiten, wie auch immer man die jetzt

00:28:10.310 --> 00:28:12.470
bekommen hat, ob man die Mengen

00:28:12.470 --> 00:28:13.450
vereinigt oder geschnitten hat,

00:28:14.610 --> 00:28:18.330
man hat jetzt noch keine Reihenfolge

00:28:18.330 --> 00:28:19.330
der Seiten irgendwie.

00:28:20.030 --> 00:28:21.990
Und die Frage wäre halt, wie rechnet man

00:28:21.990 --> 00:28:23.830
die aus? Und das, was halt so

00:28:23.830 --> 00:28:25.330
von immer gemacht wird.

00:28:26.410 --> 00:28:28.170
Zählen, absolute Zahl,

00:28:28.510 --> 00:28:28.990
sortieren.

00:28:29.570 --> 00:28:31.150
Kann man und könnte man auch machen.

00:28:31.730 --> 00:28:33.630
Aber das, was halt schon

00:28:33.630 --> 00:28:36.090
was normalerweise

00:28:36.090 --> 00:28:37.310
immer so für Scoring

00:28:37.310 --> 00:28:39.250
Ranking verwendet wird, ist halt

00:28:39.250 --> 00:28:41.630
TF-IDF. Das hatten wir, glaube ich, auch schon ein paar Mal.

00:28:42.170 --> 00:28:42.650
Das ist halt einfach

00:28:42.650 --> 00:28:45.830
die Query wird halt in

00:28:45.830 --> 00:28:46.970
ein

00:28:46.970 --> 00:28:50.330
TF-IDF-Vektor verwandelt

00:28:50.330 --> 00:28:52.570
und sozusagen

00:28:52.570 --> 00:28:53.050
die

00:28:53.050 --> 00:28:56.570
Also außer Leute, die davon schon

00:28:56.570 --> 00:28:58.510
Ahnung haben, hat das jetzt niemand verstanden, deswegen musst

00:28:58.510 --> 00:29:00.390
du noch mal kurz erklären, was das denn überhaupt ist.

00:29:00.910 --> 00:29:02.710
TF-IDF ist Term Frequency

00:29:02.710 --> 00:29:04.670
mal Inverse Document Frequency

00:29:04.670 --> 00:29:06.770
und das legt sozusagen

00:29:06.770 --> 00:29:08.370
Gewichte fest für die

00:29:08.370 --> 00:29:10.550
Tokens,

00:29:10.670 --> 00:29:12.510
also die Wörter aus deiner Quelle für

00:29:12.510 --> 00:29:14.750
Keyword und für Python jetzt in unserem Beispielfall.

00:29:15.170 --> 00:29:16.370
Ja. Und

00:29:16.370 --> 00:29:19.550
ja, das ist

00:29:19.550 --> 00:29:21.570
halt, ich weiß nicht genau, ob man genau

00:29:21.570 --> 00:29:23.410
erklären muss, wie das ausgerechnet wird.

00:29:25.130 --> 00:29:25.570
Also

00:29:25.570 --> 00:29:27.650
Termfrequenz wäre halt sozusagen

00:29:27.650 --> 00:29:28.650
auf dieses

00:29:28.650 --> 00:29:30.970
Seitenbeispiel übertragen,

00:29:31.470 --> 00:29:33.130
wie ist die Frequenz von dem Wort

00:29:33.130 --> 00:29:35.410
Python zum Beispiel auf dieser Seite? Das heißt,

00:29:36.230 --> 00:29:37.510
ich zähle, wie oft Python

00:29:37.510 --> 00:29:39.390
auf der Seite vorkommt und teile das durch die

00:29:39.390 --> 00:29:41.510
Anzahl aller Worte auf der

00:29:41.510 --> 00:29:43.510
Seite. Dann weiß ich halt, wie viel Prozent der Worte auf dieser

00:29:43.510 --> 00:29:45.490
Seite sind halt Python. Das ist die Termfrequenz.

00:29:46.370 --> 00:29:50.410
Und multipliziere das mit der Inverse Document Frequency.

00:29:50.650 --> 00:29:57.970
Das ist halt sozusagen, in wie vielen Seiten kommt denn dieses Wort überhaupt vor?

00:29:59.090 --> 00:30:00.390
Ein Maß dafür.

00:30:00.990 --> 00:30:07.930
Und je weniger das vorkommt, desto höher ist die Inverse Document Frequency.

00:30:10.590 --> 00:30:12.930
Und desto charakteristischer ist das Wort im Grunde.

00:30:13.670 --> 00:30:15.110
Für das, was da gerade steht.

00:30:15.210 --> 00:30:15.630
Ja, genau.

00:30:16.010 --> 00:30:23.570
Das heißt, du weißt ziemlich genau, wenn das hoch ist auf diesem Abschnitt, geht es tatsächlich jetzt um Preisen und es wird nicht irgendwie nur als Seitenkommentar mal kurz erwähnt oder als...

00:30:23.570 --> 00:30:28.730
Genau, also Artikel sind halt so ein Beispiel für Sachen, also der, die das, das kommt halt auf jeder Seite vor.

00:30:29.230 --> 00:30:29.830
Ja, okay, Stopwatch.

00:30:29.830 --> 00:30:37.830
Daher ist es halt einfach nicht so relevant, weil Adverse Document Frequency davon wäre halt sehr, sehr niedrig, weil, naja, es kommt halt überall vor.

00:30:37.990 --> 00:30:41.750
Das heißt, jetzt multipliziere ich diese beiden Teile.

00:30:41.970 --> 00:30:44.990
Also einmal, wie oft kommt das Wort auf der Seite vor?

00:30:46.050 --> 00:30:48.590
Wie wichtig ist das üblicherweise oder wie charakteristisch ist das?

00:30:49.390 --> 00:30:51.590
Und das Ergebnis ist halt sozusagen ein Maß dafür,

00:30:51.910 --> 00:30:55.830
dass also Worte, die wenig vorkommen oder sehr charakteristisch sind,

00:30:56.410 --> 00:30:58.710
aber sehr oft vorkommen, sind halt viel wichtiger als Worte,

00:30:58.710 --> 00:31:02.270
die überhaupt nicht charakteristisch sind, weil sie überall vorkommen.

00:31:02.410 --> 00:31:05.670
Also der Didast ist halt, die kriegen halt sehr niedrige Gewichte

00:31:05.670 --> 00:31:07.570
und Worte, die halt sehr spezifisch sind,

00:31:07.670 --> 00:31:08.610
die kriegen halt sehr hohe Gewichte.

00:31:09.610 --> 00:31:11.490
Und das macht man jetzt auch mit der Query und macht das auch

00:31:11.490 --> 00:31:13.530
nochmal mit allen Seiten sozusagen

00:31:13.530 --> 00:31:15.530
und dann multipliziert man das

00:31:15.530 --> 00:31:17.270
miteinander. Also die

00:31:17.270 --> 00:31:19.550
Kursindustanz. Das heißt, man muss halt tatsächlich genau

00:31:19.550 --> 00:31:21.390
diese Dinge bilden oder bauen

00:31:21.390 --> 00:31:23.550
für jeden einzelnen Text

00:31:23.550 --> 00:31:25.030
Baustein, den man untersuchen möchte.

00:31:25.470 --> 00:31:27.430
Ja, man muss da gar nicht so viel

00:31:27.430 --> 00:31:29.290
machen. Tatsächlich, also das

00:31:29.290 --> 00:31:31.670
Bauen der Listen, in welchen Dokumenten

00:31:31.670 --> 00:31:33.510
welches Wort vorkommt, ist halt eigentlich das, was man

00:31:33.510 --> 00:31:35.330
hauptsächlich tut, wenn man

00:31:35.330 --> 00:31:37.590
einen Index baut. Diese ganzen

00:31:37.590 --> 00:31:39.370
Geschichten, wie oft kommt das Wort jetzt wo vor und

00:31:39.370 --> 00:31:41.730
das speichert man auch in dem Index,

00:31:41.830 --> 00:31:43.830
aber das ist eigentlich nicht so schlimm.

00:31:44.010 --> 00:31:45.050
Das geht eigentlich relativ einfach.

00:31:45.330 --> 00:31:47.770
Am Schluss hat man diese ganzen Informationen, auch die Texte

00:31:47.770 --> 00:31:49.810
nicht mehr, sondern man kann halt sozusagen

00:31:49.810 --> 00:31:51.610
aus dem, was man im Index stehen hat, plus

00:31:51.610 --> 00:31:53.930
der Query halt diese ganzen Sachen ausrechnen.

00:31:54.190 --> 00:31:55.430
Okay. Du hast irgendwas über den

00:31:55.430 --> 00:31:57.550
Cousinus-Distanz. Ja, genau. Wenn ich jetzt

00:31:57.550 --> 00:31:59.770
zwei Vektoren habe, dann ist die Cousinus-Distanz

00:31:59.770 --> 00:32:00.830
dazwischen einfach nur

00:32:00.830 --> 00:32:03.870
der Winkel, also der Cousinus des Winkels

00:32:03.870 --> 00:32:05.590
zwischen den beiden Vektoren. Also jetzt

00:32:05.590 --> 00:32:07.470
noch mal kurz, also der Vektor ist tatsächlich dann

00:32:07.470 --> 00:32:09.450
die Informationen darüber, auf

00:32:09.450 --> 00:32:11.390
welchen Seiten wie viel Information über

00:32:11.390 --> 00:32:13.550
das gesuchte Wort Python oder Keyword steht.

00:32:14.570 --> 00:32:14.950
Ja, also

00:32:14.950 --> 00:32:17.330
die Gewichte sind jetzt sozusagen die Werte

00:32:17.330 --> 00:32:18.750
in dem Vektor und

00:32:18.750 --> 00:32:21.530
können halt niedriger oder höher sein.

00:32:22.450 --> 00:32:23.370
Das wird immer normiert

00:32:23.370 --> 00:32:25.230
auf, die Vektoren werden immer normiert auf

00:32:25.230 --> 00:32:27.210
1, auf eine Länge 1,

00:32:27.310 --> 00:32:27.610
sozusagen.

00:32:29.230 --> 00:32:31.110
Und der Anteil von einem Wort, das halt

00:32:31.110 --> 00:32:33.370
wichtig ist, ist halt dann einfach höher als von Worten,

00:32:33.410 --> 00:32:34.310
die nicht so wichtig sind.

00:32:35.010 --> 00:32:37.390
Man normiert auch deswegen damit halt längere

00:32:37.390 --> 00:32:38.730
Vektoren nicht einen Vorteil haben.

00:32:39.670 --> 00:32:41.290
Wenn du das nicht normieren würdest,

00:32:41.410 --> 00:32:43.310
dann würden Seiten, auf denen viele

00:32:43.310 --> 00:32:45.270
Worte stehen oder Dokumente, die halt sehr, sehr lang

00:32:45.270 --> 00:32:47.170
sind, würden halt viel relevanter bei

00:32:47.170 --> 00:32:48.850
vielen Sucherabfragen sein, einfach weil die halt

00:32:48.850 --> 00:32:49.850
auch viel mehr Sachen matchen.

00:32:50.690 --> 00:32:53.170
Daher normiert man

00:32:53.170 --> 00:32:54.870
das halt auf eine Einheitslänge, sodass

00:32:54.870 --> 00:32:56.910
dann, wenn ein Dokument sehr lang ist,

00:32:57.010 --> 00:32:58.390
kriegen die einzelnen Worte halt weniger

00:32:58.390 --> 00:32:59.290
Gewicht.

00:33:00.490 --> 00:33:02.130
Und ja,

00:33:02.710 --> 00:33:04.050
dann wird das halt vergleichbar.

00:33:05.410 --> 00:33:05.610
Und

00:33:05.610 --> 00:33:10.470
Und ja, also im Grunde ist das eben relativ einfach.

00:33:10.670 --> 00:33:15.230
Also diese TFE-DF-Distanz ist halt nichts weiter als der Cosinus

00:33:15.230 --> 00:33:16.890
zwischen dem Winkel der beiden Vektoren.

00:33:17.050 --> 00:33:18.730
Und das klingt jetzt auch irgendwie kompliziert.

00:33:18.850 --> 00:33:21.290
Tatsächlich ist es so, es ist halt super einfach auszurechnen,

00:33:21.790 --> 00:33:25.950
weil das ist einfach nur das Skalarprodukt der Vektoren.

00:33:26.590 --> 00:33:28.830
Und das wiederum ist super einfach auszurechnen.

00:33:28.830 --> 00:33:31.930
Also dieser Vektorraum, in dem diese Operationen stattfinden,

00:33:32.530 --> 00:33:35.530
wenn man jetzt sozusagen jedem Wort eine Dimension zuordnet,

00:33:35.610 --> 00:33:37.210
Texte, also

00:33:37.210 --> 00:33:40.410
wenn man jetzt ein Dokument-Korpus nimmt, ganz viele Dokumente,

00:33:40.550 --> 00:33:42.270
dann kann es sein, dass da so ein paar

00:33:42.270 --> 00:33:44.130
10.000 Wörter drin vorkommen oder

00:33:44.130 --> 00:33:46.390
vielleicht, wenn man jetzt, also vielleicht auch ein paar 100.000,

00:33:46.690 --> 00:33:47.910
also, und man

00:33:47.910 --> 00:33:50.330
hat jetzt sozusagen für jedes Wort eine Dimension,

00:33:52.150 --> 00:33:52.550
dann

00:33:52.550 --> 00:33:54.310
klingt das irgendwie alles ganz

00:33:54.310 --> 00:33:56.410
schrecklich. Man sagt, ein 100.000-dimensionaler Vektorraum

00:33:56.410 --> 00:33:58.290
ist ja irgendwie schwer vorzustellen und dann

00:33:58.290 --> 00:34:00.270
daran irgendwie Winkel, uh, was soll denn das

00:34:00.270 --> 00:34:02.350
sein? Aber eigentlich

00:34:02.350 --> 00:34:04.010
ist es halt total blöd,

00:34:04.290 --> 00:34:06.210
einfach, weil das Schöne daran ist,

00:34:06.350 --> 00:34:07.590
oder das ist der Grund, warum man das macht, ist,

00:34:08.090 --> 00:34:10.110
ein Skalarprodukt an der Stelle ist halt, wenn das

00:34:10.110 --> 00:34:12.070
so sparsam ist, also die meisten Worte kommen ja in den meisten

00:34:12.070 --> 00:34:14.190
Texten gar nicht vor. Das heißt, wenn ich

00:34:14.190 --> 00:34:16.130
einen Dokumentfaktor habe, dann

00:34:16.130 --> 00:34:17.710
ist der an den allermeisten Stellen null.

00:34:18.950 --> 00:34:20.070
Und alle Dinge, die null sind,

00:34:20.130 --> 00:34:21.650
die muss ich mir beim Skalarprodukt gar nicht angucken.

00:34:21.810 --> 00:34:23.670
Wenn irgendwas multipliziert wird,

00:34:23.890 --> 00:34:26.130
wo eine Null drin ist, dann ist es ja sofort auch wieder null.

00:34:26.630 --> 00:34:28.050
Könnt ihr das nochmal nachrechnen, bitte?

00:34:28.330 --> 00:34:29.910
Ja, das heißt, die Rechneroperation

00:34:29.910 --> 00:34:31.930
ist halt, ich gehe durch jedes

00:34:31.930 --> 00:34:34.090
Ding in der Query

00:34:34.090 --> 00:34:36.090
ja, also nur durch die, die gesetzt sind, das sind ja

00:34:36.090 --> 00:34:38.050
meist nur zwei, drei Worte und guckt

00:34:38.050 --> 00:34:40.170
dann, existiert im Index

00:34:40.170 --> 00:34:40.590
dafür

00:34:40.590 --> 00:34:43.190
Seiten, auf denen das vorkommt

00:34:43.190 --> 00:34:46.050
und das war es, mehr muss ich nicht machen

00:34:46.050 --> 00:34:47.130
und damit habe ich ja schon sozusagen

00:34:47.130 --> 00:34:50.230
alle, wo ich überhaupt ein Skalarprodukt ausrechnen kann

00:34:50.230 --> 00:34:51.510
gefunden

00:34:51.510 --> 00:34:53.370
und

00:34:53.370 --> 00:34:56.010
jetzt muss ich nur noch ein paar

00:34:56.010 --> 00:34:57.850
andere statistische Werte haben, um das halt wirklich

00:34:57.850 --> 00:35:00.070
ausrechnen zu können und das ist halt

00:35:00.070 --> 00:35:02.130
eine total einfache

00:35:02.130 --> 00:35:03.530
Operation, also das ist halt

00:35:03.530 --> 00:35:06.090
weißt du, welche anderen statistischen

00:35:06.090 --> 00:35:07.590
Werte du jetzt noch haben möchtest zum

00:35:07.590 --> 00:35:08.650
eigentlichen Ranken?

00:35:14.770 --> 00:35:15.290
Naja,

00:35:16.670 --> 00:35:18.070
tatsächlich müsste man wahrscheinlich noch

00:35:18.070 --> 00:35:18.510
an jedem,

00:35:20.030 --> 00:35:21.850
also die Dinger im Index heißt dann

00:35:21.850 --> 00:35:23.790
Postinglisten, dann müsste man wahrscheinlich noch irgendwie den

00:35:23.790 --> 00:35:25.730
TF-EDF-Wert tatsächlich, also ich

00:35:25.730 --> 00:35:27.850
weiß es ehrlich gesagt nicht, Lucine macht

00:35:27.850 --> 00:35:29.950
das, weiß gar nicht, was Lucine da alles speichert,

00:35:30.030 --> 00:35:30.830
sie speichert noch ein paar andere Sachen.

00:35:32.470 --> 00:35:33.230
Ich würde sagen,

00:35:33.390 --> 00:35:34.750
einen TF-EDF-Wert braucht man vielleicht,

00:35:34.750 --> 00:35:36.150
also eigentlich, ich glaube,

00:35:36.230 --> 00:35:38.590
die machen das so, dass sie das auch erst ausrechnen,

00:35:38.650 --> 00:35:39.590
wenn die Query kommt.

00:35:41.070 --> 00:35:42.750
Aber was das genau ist, weiß ich jetzt auch nicht mehr.

00:35:42.870 --> 00:35:44.590
Also man kann das Ganze auch leicht

00:35:44.590 --> 00:35:45.650
und naiv implementieren

00:35:45.650 --> 00:35:48.530
in Python. Man kann einfach für diese

00:35:48.530 --> 00:35:49.970
Posting-Listen, das sind sozusagen die

00:35:49.970 --> 00:35:52.630
Listen der Seiten, auf denen irgendwas

00:35:52.630 --> 00:35:54.550
vorkommt oder die IDs der Dokumente,

00:35:55.370 --> 00:35:56.490
die packt man einfach in ein Set

00:35:56.490 --> 00:35:57.990
und indizieren

00:35:57.990 --> 00:35:59.650
bedeutet einfach nur,

00:36:00.550 --> 00:36:02.250
die Dokumente zu tokenisieren

00:36:02.470 --> 00:36:25.070
Und dann für jedes Token sozusagen einen Eintrag mit der ID des Dokuments in die Posting-Liste zu tun. Posting-Liste, so heißt es im Allgemeinen, aber in unserem Fall wäre das jetzt, wenn man jetzt sozusagen als Datenstruktur dafür Sets nehmen würde, Sets und dann kannst du halt hinterher, wenn eine Query kommt, irgendwie genau das machen, kannst halt irgendwie Schnittmenge und Vereinigungsmenge bilden, je nachdem, ob du deine Query mit AND oder OR verknüpfen willst.

00:36:26.690 --> 00:36:45.070
Ja, kriegst damit schon mal was raus und kannst halt auch, wenn du jetzt die TF-IDF-Werte noch mitgespeichert hast, kannst du auch einfach die Cuisinassistenz ausrechnen und hast dann schon im Grunde das implementiert, was eine Suchmaschine so tut. Das geht wahrscheinlich in 30 Zeilen Python oder sowas.

00:36:45.070 --> 00:36:46.370
Ja, wir lieben keinen.

00:36:46.390 --> 00:36:50.150
Also das geht relativ einfach, denke ich mal.

00:36:52.030 --> 00:36:54.490
Und ich habe es mit Sets auch schon mal ausprobiert,

00:36:54.550 --> 00:36:55.710
das ist auch ziemlich schnell.

00:36:56.630 --> 00:36:58.970
Das, was an Sets ein bisschen doof ist,

00:36:59.130 --> 00:37:00.770
deswegen macht man das auch dann tatsächlich,

00:37:00.850 --> 00:37:02.830
wenn man jetzt eine Suchmaschine implementiert, nicht so,

00:37:03.810 --> 00:37:06.930
ist, dass die halt sehr, sehr viel Hauptspeicher verbrauchen.

00:37:09.370 --> 00:37:11.150
Und überhaupt, man muss natürlich alles,

00:37:11.650 --> 00:37:13.670
wenn man so ein Python-Set hat, muss man es im Hauptspeicher halten,

00:37:13.670 --> 00:37:37.810
Weil, naja, es ist halt eben keine Datenstruktur, die irgendwie auf der Platte liegen kann. Während jetzt ein Lucid-Index ist ein Ding, das eigentlich auf der Platte liegt. Und das kann halt auch größer als Hauptspeicher werden, das ist gar kein Problem. Und das ist so gebaut, dass das maximal performant ist, wenn Sachen von der Platte auch gelesen werden und so.

00:37:37.810 --> 00:37:41.870
und das sind schon einige schöne Tricks dabei.

00:37:44.350 --> 00:37:46.970
Aber tatsächlich, wenn man das jetzt einfach so implementieren möchte,

00:37:47.650 --> 00:37:49.090
kann man das mit Sets durchaus mal machen.

00:37:49.570 --> 00:37:53.030
Was dann die großen Suchmaschinen machen

00:37:53.030 --> 00:37:55.990
und weswegen das Ding auch Postinglist heißt,

00:37:56.150 --> 00:37:57.930
ist, dass man das eben nicht in einem Set hält,

00:37:57.930 --> 00:38:03.470
sondern in einer Liste, die sortiert ist,

00:38:05.310 --> 00:38:07.850
sozusagen, wo eben die Dokument-IDs

00:38:07.850 --> 00:38:09.530
oder jetzt im Beispiel

00:38:09.530 --> 00:38:11.450
Seitenzahlen, die werden halt einfach sortiert

00:38:11.450 --> 00:38:13.790
und dann speichert man nicht die Seitenzahlen

00:38:13.790 --> 00:38:14.910
selber oder die IDs selber,

00:38:15.670 --> 00:38:17.610
sondern man speichert nur die Differenz

00:38:17.610 --> 00:38:19.830
dazwischen, weil die Differenzen

00:38:19.830 --> 00:38:21.310
zwischen den IDs sind halt viel kleiner.

00:38:22.550 --> 00:38:23.650
Und dann macht man etwas

00:38:23.650 --> 00:38:25.870
ganz Fieses, das nennt sich Variable-Wide-Encoding.

00:38:27.610 --> 00:38:29.710
Aha, schon wieder so ein Zauberwort, ja.

00:38:31.770 --> 00:38:32.770
Und das

00:38:32.770 --> 00:38:35.390
bedeutet halt, dass du

00:38:35.390 --> 00:38:37.230
diese

00:38:37.230 --> 00:38:39.230
Nummer, also jetzt in C oder so,

00:38:39.570 --> 00:38:40.270
wenn du da jetzt

00:38:40.270 --> 00:38:43.510
ein Array hast,

00:38:43.630 --> 00:38:45.490
dann müssen ja alle Werte

00:38:45.490 --> 00:38:46.930
in dem Array den gleichen Typ haben.

00:38:48.610 --> 00:38:48.930
Und

00:38:48.930 --> 00:38:51.590
das macht man

00:38:51.590 --> 00:38:53.230
halt nicht so, um Platz zu sparen,

00:38:53.390 --> 00:38:55.810
sondern man nimmt

00:38:55.810 --> 00:38:57.350
einfach üblicherweise

00:38:57.350 --> 00:38:59.670
dann Characters, also Byte-mäßige

00:38:59.670 --> 00:39:01.370
Dinge. Ich weiß gar nicht, also in C weiß ich jetzt,

00:39:01.430 --> 00:39:02.490
es geht. Ich habe aber mal sowas

00:39:02.490 --> 00:39:04.490
letztlich mal selber implementiert.

00:39:05.470 --> 00:39:06.090
Ja, ja.

00:39:08.530 --> 00:39:09.330
Fast Suchmaschine

00:39:09.330 --> 00:39:11.010
geschrieben aus Versehen. Aber

00:39:11.010 --> 00:39:15.370
ich weiß gar nicht, wie man das in Java oder so macht.

00:39:15.750 --> 00:39:16.250
Keine Ahnung.

00:39:17.430 --> 00:39:19.010
Geht bestimmt auch irgendwie und

00:39:19.010 --> 00:39:21.190
definiert sich die Datenstruktur selber.

00:39:21.650 --> 00:39:23.270
Also es ist nicht so, dass man sagt, okay, das sind jetzt

00:39:23.270 --> 00:39:25.330
alles Integer-Werte oder so, sondern man sagt,

00:39:25.470 --> 00:39:27.130
okay, das ist einfach nur ein Array von Charaktern.

00:39:28.130 --> 00:39:29.110
Und wie viel

00:39:29.110 --> 00:39:32.070
Bytes ich sozusagen

00:39:32.070 --> 00:39:33.950
pro oder wie viel Bit

00:39:33.950 --> 00:39:35.390
ich pro

00:39:35.390 --> 00:39:37.810
Eintrag in der Posting-Liste

00:39:37.810 --> 00:39:38.870
verwende,

00:39:39.230 --> 00:39:42.090
das verwalte ich

00:39:42.090 --> 00:39:44.070
selber, weil wenn die

00:39:44.070 --> 00:39:46.150
Abstände klein sind, dann kann ich viel weniger

00:39:46.150 --> 00:39:47.950
Bits nehmen, als wenn die Abstände groß sind, dann muss ich halt

00:39:47.950 --> 00:39:49.730
mehr Bits nehmen und

00:39:49.730 --> 00:39:51.710
deswegen heißt das Ding auch Variable Byte Encoding,

00:39:52.330 --> 00:39:54.050
weil ein Eintrag

00:39:54.050 --> 00:39:55.870
in der Posting-Liste halt unterschiedlich viele Bytes

00:39:55.870 --> 00:39:57.390
haben kann, je nachdem, wie groß der ist.

00:39:58.130 --> 00:39:59.370
Weil wieder Abstand ist zwischen

00:39:59.370 --> 00:40:01.170
der vorherigen und der nächsten ID.

00:40:01.990 --> 00:40:03.730
Und wenn ich jetzt sortierte Listen habe,

00:40:03.810 --> 00:40:05.730
dann kann ich die sehr, sehr gut, da gibt es halt diverse

00:40:05.730 --> 00:40:07.730
Algorithmen für, kann ich sehr gut schneiden

00:40:07.730 --> 00:40:08.890
zum Beispiel. Solche Operationen wie

00:40:08.890 --> 00:40:11.230
Schnittmenge davon bilden, das geht halt toll.

00:40:12.130 --> 00:40:13.590
Geht mit Sets auch, aber Sets

00:40:13.590 --> 00:40:15.270
können ja noch viel mehr und so.

00:40:16.370 --> 00:40:17.590
Aber da brauche ich ja eigentlich nur

00:40:17.590 --> 00:40:19.010
diese Schnittoperation, Vereinigung ist auch

00:40:19.010 --> 00:40:21.630
total simpel. Und das geht halt

00:40:21.630 --> 00:40:23.130
super, wenn ich so sortierte Listen habe.

00:40:25.030 --> 00:40:25.750
Ja, und

00:40:25.750 --> 00:40:27.950
genau,

00:40:28.130 --> 00:40:30.410
das ist halt auch, das ist relativ

00:40:30.410 --> 00:40:31.830
schnell, das ist vor allen Dingen auch deswegen schnell,

00:40:32.870 --> 00:40:34.390
also die Kompression an der

00:40:34.390 --> 00:40:35.970
Stelle, die ich dadurch kriege, also ich

00:40:35.970 --> 00:40:38.330
kriege das auf ein Drittel des ursprünglichen, also wenn ich das einfach nur

00:40:38.330 --> 00:40:39.350
als Integer speichern würde,

00:40:40.170 --> 00:40:42.110
dann brauche ich, ja,

00:40:43.970 --> 00:40:45.890
sagen wir mal, ich brauche einen Speicher 1,

00:40:46.050 --> 00:40:47.730
und wenn ich das irgendwie variable

00:40:47.730 --> 00:40:50.150
mit Variable Byte Encoding kodiere,

00:40:50.250 --> 00:40:52.330
dann brauche ich halt nur noch Speicher 0,3,

00:40:52.490 --> 00:40:54.270
also das reduziert das halt auf ein Drittel

00:40:54.270 --> 00:40:56.250
und es ist auch noch viel

00:40:56.250 --> 00:40:58.130
schneller. Und der Grund, warum es viel schneller ist, ist halt

00:40:58.130 --> 00:41:00.450
einfach, dass das Bottleneck

00:41:00.450 --> 00:41:01.930
ist halt irgendwie,

00:41:02.550 --> 00:41:04.050
dass durch die CPU, also die

00:41:04.050 --> 00:41:05.990
Speicherbandbreite ist das Problem. Du musst es halt irgendwie,

00:41:06.130 --> 00:41:08.090
diese Listen von Arrays musst du halt irgendwie

00:41:08.090 --> 00:41:10.370
durch die CPU kriegen und irgendwie durch den Hauptspeicher

00:41:10.370 --> 00:41:12.170
und wenn die kleiner sind, dann geht das schneller durch den

00:41:12.170 --> 00:41:14.210
Hauptspeicher oder durch den Bus,

00:41:14.330 --> 00:41:16.110
weil, ja, und das

00:41:16.110 --> 00:41:17.990
in der CPU dann auszupacken und

00:41:17.990 --> 00:41:20.170
miteinander, das ist alles kein Problem mehr.

00:41:21.170 --> 00:41:21.530
Aber

00:41:21.530 --> 00:41:23.990
ja, das halt aus dem Hauptspeicher

00:41:23.990 --> 00:41:25.750
durch die CPU zu quetschen, das ist halt das Problem.

00:41:25.750 --> 00:41:27.430
und wenn das kleiner ist, dann geht das halt schneller,

00:41:27.650 --> 00:41:29.110
weil du hast halt nur so und so viel

00:41:29.110 --> 00:41:31.490
100 oder so und so viel

00:41:31.490 --> 00:41:33.530
Gigabyte pro Sekunde, die du da durchkriegst.

00:41:34.950 --> 00:41:35.130
Und

00:41:35.130 --> 00:41:37.030
ja,

00:41:37.910 --> 00:41:39.630
genau, deswegen macht man das so,

00:41:39.690 --> 00:41:41.170
das macht das Ganze so ein bisschen kompliziert,

00:41:42.190 --> 00:41:43.730
aber

00:41:43.730 --> 00:41:45.030
ja,

00:41:45.870 --> 00:41:47.730
und auch selbst so

00:41:47.730 --> 00:41:49.670
von dem Volltextindex von

00:41:49.670 --> 00:41:51.590
Postgres weiß ich, dass er das auch so macht, im Prinzip.

00:41:51.790 --> 00:41:53.390
Also solche Sachen werden da auch schon gemacht,

00:41:53.390 --> 00:41:55.210
also kann man sich schon vorstellen, es ist schon relativ

00:41:55.210 --> 00:41:58.270
ist halt nicht so eine

00:41:58.270 --> 00:42:00.250
total naive Implementation. Das ist auch ganz schön

00:42:00.250 --> 00:42:00.890
optimiert schon.

00:42:02.850 --> 00:42:02.970
Ja.

00:42:06.630 --> 00:42:08.270
Jetzt haben wir eine schnelle Suchanfrage

00:42:08.270 --> 00:42:10.330
schon, aber ich habe immer noch nicht genau verstanden,

00:42:10.550 --> 00:42:10.890
warum

00:42:10.890 --> 00:42:14.270
die Ergebnisse jetzt besonders toll sein

00:42:14.270 --> 00:42:15.690
sollen. Es gibt bestimmt noch ganz viele andere.

00:42:16.210 --> 00:42:17.270
Die FS oder der Standard,

00:42:17.650 --> 00:42:20.250
das hat man ganz lange gemacht, jetzt heutzutage

00:42:20.250 --> 00:42:22.290
auch nicht mehr, sondern heutzutage

00:42:22.290 --> 00:42:23.510
nimmt man eher sowas wie,

00:42:24.090 --> 00:42:26.470
Also es gibt halt zum Beispiel Track-Konferenzen.

00:42:27.790 --> 00:42:31.170
Track, das hört sich nach einer Raumschiff-Serie an.

00:42:31.430 --> 00:42:34.230
Ja, wird eher mit C geschrieben und nicht mit K.

00:42:35.910 --> 00:42:37.790
Da haben sich Leute halt Gedanken darüber gemacht,

00:42:37.790 --> 00:42:42.950
wie evaluiert man eigentlich Suchergebnis-Performance

00:42:42.950 --> 00:42:44.130
von Suchmaschinen.

00:42:44.210 --> 00:42:48.410
Da gibt es dann diverse Standard-Corpora mit Dokumenten drin,

00:42:48.670 --> 00:42:51.110
wo man dann halt auch Standard-Querys halt immer drauf abfeuert

00:42:51.110 --> 00:42:52.750
und guckt halt, wie sind die Ergebnisse und so.

00:42:53.550 --> 00:43:08.330
Und da hat sich irgendwann, ich weiß gar nicht, wann das, also TF-IDF hat man lange benutzt, aber dann hat man festgestellt, so kleine Multiplikationen, also die Formeln, es sieht immer so ein bisschen ähnlich aus, aber manchmal passt man die so ein bisschen an.

00:43:08.330 --> 00:43:13.890
Manchmal kommen so konstante Faktoren dazu oder so, die man irgendwo reinbaut und dann werden die Ergebnisse ein bisschen besser.

00:43:14.250 --> 00:43:16.150
Und das, was momentan, also man hat

00:43:16.150 --> 00:43:18.030
ganz viele unterschiedliche gegeneinander getestet,

00:43:18.810 --> 00:43:20.030
das, was in den meisten Fällen

00:43:20.030 --> 00:43:22.090
gut funktioniert und das, was jetzt auch alle so als

00:43:22.090 --> 00:43:23.550
Standard, glaube ich, verwenden,

00:43:23.850 --> 00:43:25.690
nennt sich BM25.

00:43:27.130 --> 00:43:27.890
BM25? Ja.

00:43:28.070 --> 00:43:28.810
Oder OKAPI.

00:43:30.310 --> 00:43:31.470
BM steht für Best Match.

00:43:32.370 --> 00:43:32.570
Ja.

00:43:34.530 --> 00:43:35.470
OKAPI. Ja.

00:43:36.350 --> 00:43:37.950
Ja. Das ist, glaube ich,

00:43:37.950 --> 00:43:39.850
ein Tier. Ja, genau.

00:43:40.110 --> 00:43:40.890
Daher kommt das auch.

00:43:43.690 --> 00:43:44.090
Entschuldigung.

00:43:44.250 --> 00:43:49.530
das ist nicht

00:43:49.530 --> 00:43:51.710
großartig anders als TF-EDF

00:43:51.710 --> 00:43:53.310
sozusagen Standard-Mercedes, so ein paar

00:43:53.310 --> 00:43:54.590
Dinge sind halt noch dran,

00:43:54.730 --> 00:43:57.550
eigentlich sind da nur so ein paar magische Konstanten

00:43:57.550 --> 00:43:58.630
und Faktoren drin

00:43:58.630 --> 00:44:00.230
und

00:44:00.230 --> 00:44:02.170
ja, das ist halt so ein bisschen

00:44:02.170 --> 00:44:05.610
Fummelei und ist auch nicht

00:44:05.610 --> 00:44:07.250
offensichtlich, warum das jetzt genau dieser Art

00:44:07.250 --> 00:44:09.090
besser funktioniert als die anderen, deswegen heißt es

00:44:09.090 --> 00:44:11.430
und genau deswegen ist es auch BM25

00:44:11.430 --> 00:44:13.450
also man hat halt ganz viele Dinge ausprobiert

00:44:13.450 --> 00:44:15.170
und das, was dann halt über ganz viele

00:44:15.170 --> 00:44:17.410
Datasets hinweg

00:44:17.410 --> 00:44:19.130
und Query-Sets am besten funktioniert hat,

00:44:19.230 --> 00:44:20.790
ist halt dieses Ding. Nämlich nicht

00:44:20.790 --> 00:44:23.410
BestMatch 13 oder 47,

00:44:23.610 --> 00:44:25.390
sondern BestMatch 25 hat sich

00:44:25.390 --> 00:44:27.250
herausgestellt. Also das funktioniert in den meisten Fällen

00:44:27.250 --> 00:44:29.150
irgendwie ganz gut. Das ist doch eine tolle Zahl übrigens.

00:44:30.650 --> 00:44:31.370
Also man konnte

00:44:31.370 --> 00:44:33.330
das vorher gar nicht sagen, was das jetzt, welches

00:44:33.330 --> 00:44:35.130
von denen dann wirklich gut funktionieren würde und

00:44:35.130 --> 00:44:37.190
dieses Ding ist halt das. Und seitdem das

00:44:37.190 --> 00:44:39.330
in dieser Konferenz

00:44:39.330 --> 00:44:41.170
halt dann auf das Ergebnis

00:44:41.170 --> 00:44:42.490
rausgefallen ist. Guckst du eigentlich PK?

00:44:43.450 --> 00:44:45.870
die Serie. Ja, ist das eine neue Star Trek Serie?

00:44:46.010 --> 00:44:47.950
Ja, tatsächlich habe ich jetzt auch mit

00:44:47.950 --> 00:44:49.830
angefangen, weil ich dachte, so gut. Ich habe auch schon

00:44:49.830 --> 00:44:51.950
zwei Folgen geschafft. Ja, es gibt

00:44:51.950 --> 00:44:54.090
jetzt fünf, glaube ich. Kann sein.

00:44:54.350 --> 00:44:55.770
Ich habe keine Ahnung. Ja,

00:44:55.910 --> 00:44:57.710
jetzt war jetzt ein verregneter Sonntag.

00:44:59.050 --> 00:45:01.850
Da haben wir, glaube ich, tatsächlich alle

00:45:01.850 --> 00:45:03.810
geschafft. Cool. Ja, läuft gerade auf Prime.

00:45:03.950 --> 00:45:05.790
Sehr schön. Ja, Entschuldigung, ich wollte dich nicht von der

00:45:05.790 --> 00:45:07.830
Trek-Konferenz abhalten. Ja, ja.

00:45:08.090 --> 00:45:09.810
Also ansonsten bin ich ehrlich gesagt

00:45:09.810 --> 00:45:11.510
gar nicht so ein Star Trek-Fan. Aber

00:45:11.510 --> 00:45:13.650
ja, da hat mich der Spektakelfaktor

00:45:13.650 --> 00:45:15.590
doch irgendwie mitgezogen.

00:45:17.150 --> 00:45:17.510
Die flogen

00:45:17.510 --> 00:45:18.110
in Flossbach.

00:45:19.390 --> 00:45:21.310
Ja, jedenfalls

00:45:21.310 --> 00:45:23.770
genau,

00:45:24.130 --> 00:45:25.310
also das ist halt dabei rausgefallen, deswegen

00:45:25.310 --> 00:45:26.290
implementieren das alle.

00:45:27.730 --> 00:45:29.170
Das ist auch schon

00:45:29.170 --> 00:45:31.010
über zehn Jahre her oder so, da dachte ich dann so,

00:45:31.070 --> 00:45:33.290
da habe ich davon gelesen, BestMatch25,

00:45:33.410 --> 00:45:35.530
voll gut, bringt auf jeden Fall noch ein bisschen

00:45:35.530 --> 00:45:36.770
was gegenüber TFDF und so.

00:45:37.170 --> 00:45:38.570
Dazu kann man das nicht in Lusine einbauen.

00:45:39.390 --> 00:45:41.190
Und dann habe ich da so ein bisschen reingeguckt und dachte mir so,

00:45:41.190 --> 00:45:44.010
oh nein, das geht nicht.

00:45:44.170 --> 00:45:45.570
Ich muss so viele Klassen anfassen,

00:45:45.730 --> 00:45:47.210
das kann man einfach völlig vergessen.

00:45:48.150 --> 00:45:50.750
Und war relativ enttäuscht

00:45:50.750 --> 00:45:51.910
und habe mir damals schon gedacht,

00:45:52.010 --> 00:45:53.730
Lysin, Dreck.

00:45:54.470 --> 00:45:55.090
So ein Unsinn.

00:45:55.610 --> 00:45:57.570
Aber mittlerweile haben das andere Leute,

00:45:57.570 --> 00:45:59.270
haben das implementiert.

00:45:59.930 --> 00:46:01.050
Die hatten mehr Lust da drauf.

00:46:01.670 --> 00:46:03.690
Mehr Ausdauer und jetzt ist es halt drin

00:46:03.690 --> 00:46:05.630
und es funktioniert und das ist auch das,

00:46:05.730 --> 00:46:07.570
was man, glaube ich, automatisch irgendwie kriegt als Default.

00:46:08.990 --> 00:46:09.930
Wie M420.

00:46:10.850 --> 00:46:12.570
Was war denn damals bei den ersten Suchmaschinen?

00:46:12.710 --> 00:46:14.770
Also Alta Vista zum Beispiel war ja so

00:46:14.770 --> 00:46:16.770
mit, wann war das die erste? TFEDF.

00:46:16.870 --> 00:46:18.650
Ja, oder leichte Abwandlung davon, aber

00:46:18.650 --> 00:46:19.670
im Wesentlichen das.

00:46:20.410 --> 00:46:22.650
Das ist auch das, was irgendwie so ein bisschen

00:46:22.650 --> 00:46:24.570
diese ersten SEO

00:46:24.570 --> 00:46:26.770
Geschichten getrieben

00:46:26.770 --> 00:46:27.030
hat.

00:46:28.450 --> 00:46:30.450
Wo Leute dann so angefangen haben,

00:46:30.530 --> 00:46:32.050
alle möglichen Worte mit in ihre

00:46:32.050 --> 00:46:34.090
Seiten zu packen,

00:46:34.170 --> 00:46:35.710
für die sie gefunden werden wollen.

00:46:36.050 --> 00:46:38.390
Weil das zielt natürlich genau darauf ab,

00:46:38.590 --> 00:46:40.170
halt irgendwie den TFEDF,

00:46:40.370 --> 00:46:42.470
den TF-IDF-Wert hoch zu...

00:46:42.470 --> 00:46:44.310
Und das funktioniert ja auch. Also wenn du es ganz naiv machst,

00:46:44.890 --> 00:46:46.510
kannst du damit tatsächlich irgendwie

00:46:46.510 --> 00:46:48.410
dann für alles Mögliche gut ranken.

00:46:49.390 --> 00:46:50.470
Das lässt sich halt sehr leicht

00:46:50.470 --> 00:46:51.450
gamen. Aber

00:46:51.450 --> 00:46:52.710
ja,

00:46:53.870 --> 00:46:56.550
funktioniert heute natürlich alles nicht mehr so richtig toll.

00:46:56.750 --> 00:46:57.650
Und dann wird du gestraft.

00:46:58.310 --> 00:46:59.530
Ja, ja, ja.

00:47:01.610 --> 00:47:02.570
Ja, das ist auch noch so ein

00:47:02.570 --> 00:47:02.750
Thema.

00:47:04.010 --> 00:47:04.410
Aber

00:47:04.410 --> 00:47:08.490
genau, also diese... Aber daran sieht man

00:47:08.490 --> 00:47:10.370
schon, dass es mit der Relevanz irgendwie nicht so einfach ist,

00:47:10.470 --> 00:47:12.490
dass die ganzen Suchmaschinen haben das

00:47:12.490 --> 00:47:13.270
auch nicht so richtig

00:47:13.270 --> 00:47:16.530
hingekriegt. Und die erste, die das halt so ein bisschen

00:47:16.530 --> 00:47:18.550
was fundamental Besseres gemacht hat an der Stelle,

00:47:19.030 --> 00:47:20.230
die hat halt alle anderen dann

00:47:20.230 --> 00:47:22.870
wie sagt man das,

00:47:22.890 --> 00:47:23.790
aus dem Wasser geblasen.

00:47:26.350 --> 00:47:26.710
Ja,

00:47:26.850 --> 00:47:28.370
hinter sich gelassen und ist jetzt halt

00:47:28.370 --> 00:47:30.430
irgendwie die Größte.

00:47:30.810 --> 00:47:32.310
Ich musste mir gerade so ein großes Nie-Pferd vorstellen,

00:47:32.430 --> 00:47:33.610
das einmal in die Badewanne hüpft.

00:47:33.610 --> 00:47:34.210
Ja, genau.

00:47:37.470 --> 00:47:39.050
Ja, weil eben

00:47:39.050 --> 00:47:40.430
so ein einzelner Wert

00:47:40.430 --> 00:47:42.750
ist halt problematisch.

00:47:42.950 --> 00:47:44.950
Leute fangen an, dann drauf zu optimieren

00:47:44.950 --> 00:47:45.910
und dann ist auch die Frage,

00:47:46.970 --> 00:47:49.030
was für Leute oder was für Fragen

00:47:49.030 --> 00:47:50.950
stellen die Leute eigentlich und kann man das

00:47:50.950 --> 00:47:52.690
eigentlich damit abbilden? Ist der Wert,

00:47:52.950 --> 00:47:54.990
so ein TF-EDF-Kursinus-Distanzwert,

00:47:55.390 --> 00:47:57.050
ist der für alle Arten von Suchanfragen

00:47:57.050 --> 00:47:58.890
und Dokumenten immer das Richtige? Und da ist

00:47:58.890 --> 00:48:00.270
auch die Antwort relativ klar, nein.

00:48:00.790 --> 00:48:02.850
Ist nicht so. Also, und das

00:48:02.850 --> 00:48:04.850
ist halt etwas, was Leute, glaube ich, oft

00:48:04.850 --> 00:48:06.870
nicht so wirklich auf dem Schirm

00:48:06.870 --> 00:48:09.440
haben, dass

00:48:09.440 --> 00:48:10.860
ihr Problem oft

00:48:10.860 --> 00:48:11.940
nicht ist, irgendwie

00:48:11.940 --> 00:48:14.560
eine etwas bessere

00:48:14.560 --> 00:48:16.280
TF-IDF-Formel zu finden oder

00:48:16.280 --> 00:48:18.900
irgendwie was Magisches,

00:48:19.020 --> 00:48:20.700
was irgendwie anders die Relevanz gut macht,

00:48:20.840 --> 00:48:22.300
dann plötzlich magisch, sondern dass

00:48:22.300 --> 00:48:24.820
eigentlich die Zeit besser investiert

00:48:24.820 --> 00:48:26.680
wäre, sich zu überlegen, okay, was

00:48:26.680 --> 00:48:28.500
habe ich eigentlich für Dokumente, was habe ich eigentlich für Suchanfragen

00:48:28.500 --> 00:48:30.600
da drauf und was kann ich tun,

00:48:30.800 --> 00:48:32.600
um das irgendwie zu verbessern und da gibt es auch

00:48:32.600 --> 00:48:34.400
viele Dinge, die man machen kann, aber das sind

00:48:34.400 --> 00:48:36.480
je nachdem, was man für ein Problem hat, sehr unterschiedliche

00:48:36.480 --> 00:48:38.260
Sachen. Zum Beispiel,

00:48:38.600 --> 00:48:39.020
aber ich meine,

00:48:39.700 --> 00:48:42.360
vielleicht kann ich einfach ein paar Beispiele dafür nennen, warum das

00:48:42.360 --> 00:48:42.600
halt,

00:48:44.180 --> 00:48:46.680
also TF-IDF, wenn ich jetzt

00:48:46.680 --> 00:48:48.480
zum Beispiel Location-Informationen dabei

00:48:48.480 --> 00:48:50.400
habe, hilft mir halt nicht so richtig viel. Also ich suche nach

00:48:50.400 --> 00:48:51.800
einem Restaurantnamen irgendwie

00:48:51.800 --> 00:48:54.560
bei Google Maps

00:48:54.560 --> 00:48:56.460
oder so. Dann hilft

00:48:56.460 --> 00:48:58.080
es mir nichts, wenn ich jetzt TF-IDF

00:48:58.080 --> 00:49:00.240
die nächsten Namen

00:49:00.240 --> 00:49:02.300
irgendwie kriege von allen

00:49:02.300 --> 00:49:03.680
Restaurants in Deutschland oder weltweit

00:49:03.680 --> 00:49:06.040
sortiert, dann wird wahrscheinlich irgendwo

00:49:06.040 --> 00:49:07.920
ein Restaurant in Kuala Lumpur

00:49:07.920 --> 00:49:09.820
vielleicht irgendwie am ähnlichsten sein oder den besten

00:49:09.820 --> 00:49:11.980
Score haben, aber das hilft mir ja nichts, weil

00:49:11.980 --> 00:49:14.020
ich komme da ja gar nicht hin. Das heißt,

00:49:14.100 --> 00:49:15.840
da muss irgendwie die Information, wo ich bin

00:49:15.840 --> 00:49:18.120
und wie nah das an mir dran

00:49:18.120 --> 00:49:19.620
ist, ja auch irgendwie mit rein.

00:49:20.440 --> 00:49:21.780
Sonst geht das

00:49:21.780 --> 00:49:22.620
bestimmt nicht so toll.

00:49:24.520 --> 00:49:25.800
Oder halt, wenn ich

00:49:25.800 --> 00:49:26.320
jetzt

00:49:26.320 --> 00:49:29.780
eine E-Commerce

00:49:29.780 --> 00:49:31.760
Seite habe oder

00:49:31.760 --> 00:49:33.700
eine Hotelbuchungsgeschichte oder was auch immer, etwas, wo

00:49:33.700 --> 00:49:35.600
halt hinterher Leute dann was

00:49:35.600 --> 00:49:37.200
kaufen oder was buchen oder so,

00:49:38.600 --> 00:49:39.780
dann kriege ich ja eine ganze Menge

00:49:39.780 --> 00:49:41.720
implizite Informationen darüber, was die Leute

00:49:41.720 --> 00:49:43.520
relevant gefunden haben zu einer Query.

00:49:43.620 --> 00:49:45.420
Also wenn jetzt jemand nach irgendwie, keine Ahnung,

00:49:47.560 --> 00:49:48.440
samtbezogene

00:49:48.440 --> 00:49:49.920
Sessel Amsterdam

00:49:49.920 --> 00:49:51.240
gesucht hat oder sowas

00:49:51.240 --> 00:49:52.660
und dann hinterher irgendein Hotelsversuch hat,

00:49:52.660 --> 00:49:55.660
dann weiß ich halt,

00:49:55.760 --> 00:49:57.640
das ist wahrscheinlich relevant gewesen für diese

00:49:57.640 --> 00:49:59.720
Suchanfrage und diese Information kann

00:49:59.720 --> 00:50:01.180
ich natürlich auch wieder irgendwie

00:50:01.180 --> 00:50:03.240
mitverwenden, um das

00:50:03.240 --> 00:50:05.460
beim nächsten Mal, wenn jemand anders so eine Anfrage

00:50:05.460 --> 00:50:06.880
stellt, das zu verbessern.

00:50:07.300 --> 00:50:09.160
Aber auch da hilft mir halt TF-IDF gar nicht.

00:50:09.920 --> 00:50:10.080
Cookies.

00:50:11.180 --> 00:50:11.540
Cookies.

00:50:13.020 --> 00:50:15.360
Cookie hilft mir auch nicht. Stehen die Informationen, kann man

00:50:15.360 --> 00:50:17.320
die dann nicht in sowas reinschreiben und die dann irgendwie beim nächsten Mal

00:50:17.320 --> 00:50:19.140
wiederverhelfen? Oder geht es tatsächlich darum, dass die

00:50:19.140 --> 00:50:21.120
Informationen über diesen einen Menschen für

00:50:21.120 --> 00:50:22.680
alle anderen Menschen zu manipulieren?

00:50:22.680 --> 00:50:23.920
Ja, also

00:50:23.920 --> 00:50:26.700
genau, es geht nicht um die

00:50:26.700 --> 00:50:27.720
einzelne Geschichte, aber

00:50:27.720 --> 00:50:30.900
ich erfahre sozusagen

00:50:30.900 --> 00:50:32.580
über das Verhalten von Leuten

00:50:32.580 --> 00:50:34.840
etwas darüber, welche Sachen für

00:50:34.840 --> 00:50:36.860
welche Dokumente,

00:50:37.000 --> 00:50:38.100
also welches Hotelzimmer, wenn ich jetzt

00:50:38.100 --> 00:50:40.840
so eine Hotelbuchungsengine habe oder

00:50:40.840 --> 00:50:42.960
welches Produkt irgendwie, wenn ich

00:50:42.960 --> 00:50:44.840
einen E-Commerce-Leiter habe, relevant

00:50:44.840 --> 00:50:46.880
war für eine bestimmte Suchanfrage, weil wenn jemand das

00:50:46.880 --> 00:50:48.720
sucht und dann kauft, dann war es wahrscheinlich relevant.

00:50:49.700 --> 00:50:49.920
Es gibt

00:50:49.920 --> 00:50:52.740
natürlich auch Ausnahmen, es kann natürlich auch sein, dass

00:50:52.740 --> 00:50:53.280
keine Ahnung,

00:50:55.300 --> 00:50:55.940
ich nach,

00:50:56.020 --> 00:50:58.700
weiß ich nicht, Dörrautomatsuche, ja,

00:50:58.700 --> 00:51:00.340
und dann aber so geflasht bin von

00:51:00.340 --> 00:51:03.320
dem, was hast du hier,

00:51:03.400 --> 00:51:04.400
einem Luftbefeuchter,

00:51:04.880 --> 00:51:07.140
den ich irgendwie

00:51:07.140 --> 00:51:09.720
sehe im Ergebnis, obwohl er völlig irrelevant

00:51:09.720 --> 00:51:11.480
ist und dann darauf klicke und ihn sofort kaufe.

00:51:11.520 --> 00:51:13.680
Direkt neben dem goldenen Schieberrad, vielleicht waren die auch zusammen

00:51:13.680 --> 00:51:15.460
in einem. Aber so

00:51:15.460 --> 00:51:17.520
im Durchschnitt ist es wahrscheinlich so,

00:51:17.600 --> 00:51:19.540
wenn Leute was suchen und dann auf irgendwas drauf

00:51:19.540 --> 00:51:21.600
klicken, das kaufen, dann war das wahrscheinlich

00:51:21.600 --> 00:51:23.200
relevant. Und

00:51:23.200 --> 00:51:25.500
die Informationen sozusagen,

00:51:26.560 --> 00:51:27.420
wie viele der Leute

00:51:27.420 --> 00:51:29.720
oder, das werde

00:51:29.720 --> 00:51:31.600
ich jetzt eine neue Suche, jetzt stellt jemand nochmal

00:51:31.600 --> 00:51:32.420
die gleiche Query

00:51:32.420 --> 00:51:35.900
und jetzt kann ich ja an das Suchergebnis mit ranpappen,

00:51:36.620 --> 00:51:37.620
okay, Leute,

00:51:37.760 --> 00:51:39.300
die diese Suchanfrage auch gestellt haben,

00:51:39.580 --> 00:51:41.600
oder so und so viele haben das gekauft, so und so viele

00:51:41.600 --> 00:51:43.700
haben drauf geklickt. Leute, die das gekauft haben,

00:51:43.760 --> 00:51:44.300
kauften auch.

00:51:45.760 --> 00:51:47.720
Ja, ist nicht so ganz das gleiche,

00:51:47.800 --> 00:51:49.480
aber das kann ich auch zum Ranken

00:51:49.480 --> 00:51:50.740
benutzen, muss ich ja nicht,

00:51:51.500 --> 00:51:53.520
kann ich auch, nur mit TF-IDF hat das

00:51:53.520 --> 00:51:55.520
nichts zu tun. Ich muss mir halt

00:51:55.520 --> 00:51:57.540
überlegen, wie ich das so kombiniert kriege, dass es da halt

00:51:57.540 --> 00:51:59.360
irgendwie auch zum Ranken mitverwendet wird und

00:51:59.360 --> 00:52:09.620
Tatsächlich ist es halt meistens so, dass man irgendwie andere Dinge, eben Location, irgendwie kaufen Leute das überhaupt.

00:52:11.520 --> 00:52:12.920
Ist das irgendwie interessant?

00:52:15.240 --> 00:52:21.560
Gehört das irgendwie zu den Dingen, die momentan irgendwie auf meiner Seite sowieso angefragt werden?

00:52:21.700 --> 00:52:23.280
Oder ist das halt irgendwas uraltes oder so?

00:52:24.860 --> 00:52:29.120
Diese ganze Information muss ich irgendwie zusammenpacken und das muss irgendwie in die Relevanz mit reinfließen.

00:52:29.360 --> 00:52:30.800
und

00:52:30.800 --> 00:52:34.220
ja, das macht das Ganze natürlich so ein bisschen

00:52:34.220 --> 00:52:36.260
komplizierter, aber wenn man das macht, dann kann man

00:52:36.260 --> 00:52:38.160
halt auch durchaus deutlich bessere Ergebnisse

00:52:38.160 --> 00:52:40.360
erzielen, vor allen Dingen auch zum Beispiel gegenüber Google

00:52:40.360 --> 00:52:42.260
oder so, weil Google kann halt all das

00:52:42.260 --> 00:52:44.240
im Grunde nicht machen, weil die wissen halt nicht

00:52:44.240 --> 00:52:45.640
genau, was die Leute da eigentlich suchen

00:52:45.640 --> 00:52:48.560
es ist halt ein viel breiteres

00:52:48.560 --> 00:52:50.180
Ding, es ist halt

00:52:50.180 --> 00:52:52.120
sozusagen, im gesamten Web kann ich irgendwas

00:52:52.120 --> 00:52:53.780
finden, also Google macht ein

00:52:53.780 --> 00:52:56.260
viel schwereres Problem, das heißt

00:52:56.260 --> 00:52:57.860
ich kann, wenn ich das richtig mache, in einem

00:52:57.860 --> 00:53:00.180
engeren Rahmen halt viel bessere Ergebnisse

00:53:00.180 --> 00:53:01.480
unter Umständen erzielen, als

00:53:01.480 --> 00:53:03.300
Google das jemals könnte.

00:53:04.160 --> 00:53:06.300
Und das kann natürlich sehr interessant sein, unter Umständen.

00:53:07.820 --> 00:53:08.260
Aber

00:53:08.260 --> 00:53:09.920
ich muss dann halt solche Sachen mir

00:53:09.920 --> 00:53:12.040
schon angucken. Es reicht nicht, wenn ich da

00:53:12.040 --> 00:53:13.820
irgendeine Elasticsearch nehme, das in der

00:53:13.820 --> 00:53:16.140
Default-Konfiguration laufen lasse und dann hoffe,

00:53:16.220 --> 00:53:18.180
dass das irgendwie gut wird. So einfach

00:53:18.180 --> 00:53:18.820
ist es leider nicht.

00:53:20.080 --> 00:53:21.440
Oder was auch total interessant ist, was

00:53:21.440 --> 00:53:24.140
Leute oft nicht machen, aber was halt so eine total einfache

00:53:24.140 --> 00:53:25.680
Geschichte ist, sich anzugucken,

00:53:26.840 --> 00:53:27.980
was für Queries

00:53:27.980 --> 00:53:31.300
geben die Leute eigentlich ein

00:53:31.300 --> 00:53:32.920
und was sind denn die Queries, wo

00:53:32.920 --> 00:53:34.180
kein Ergebnis kommt.

00:53:35.640 --> 00:53:37.120
Ich finde das ja sowieso immer total

00:53:37.120 --> 00:53:38.900
unverständlich, wenn ich jetzt irgendwie auf

00:53:38.900 --> 00:53:41.140
oft

00:53:41.140 --> 00:53:42.660
habe ich den Fall, tatsächlich

00:53:42.660 --> 00:53:44.180
ich suche

00:53:44.180 --> 00:53:47.120
keine Zeit zu kochen, keine Lust oder so,

00:53:47.460 --> 00:53:48.800
okay, dann lass uns doch mal irgendwo was

00:53:48.800 --> 00:53:51.120
zu essen bestellen

00:53:51.120 --> 00:53:53.000
und abholen oder so, okay,

00:53:53.120 --> 00:53:54.900
das war ganz gut, gehen wir auf die

00:53:54.900 --> 00:53:56.700
auf die Webseite, um zu gucken, hat der Laden

00:53:56.700 --> 00:53:57.560
den jetzt auf oder nicht.

00:53:59.080 --> 00:54:00.900
Ganz viele Läden kriegen das irgendwie nicht hin,

00:54:01.500 --> 00:54:02.920
die Öffnungszeiten drauf zu schreiben.

00:54:04.080 --> 00:54:04.900
Und haben aber

00:54:04.900 --> 00:54:06.660
vielleicht ein Suchfeld und wenn die Leute da immer Öffnungszeiten

00:54:06.660 --> 00:54:07.800
reinschreiben und die nicht finden,

00:54:08.220 --> 00:54:10.760
die Öffnungszeiten sind irgendwo versteckt, irgendwo tiefe

00:54:10.760 --> 00:54:12.520
Struktur und dann kann man ja auf die Idee kommen, man sucht danach.

00:54:13.280 --> 00:54:14.580
Und wenn ich jetzt so eine Seite habe und die Leute

00:54:14.580 --> 00:54:15.700
immer Öffnungszeiten reinschreiben

00:54:15.700 --> 00:54:18.640
und nie irgendwas finden, dann weiß ich, okay,

00:54:18.860 --> 00:54:19.940
hier kann ich vielleicht was verbessern.

00:54:20.740 --> 00:54:22.700
Und das ist etwas,

00:54:22.700 --> 00:54:24.220
womit relativ leicht man

00:54:24.220 --> 00:54:26.600
irgendwie wahrscheinlich viele

00:54:26.600 --> 00:54:27.280
Benutzer

00:54:27.280 --> 00:54:30.320
besser zufriedenstellen kann

00:54:30.320 --> 00:54:32.560
und das wird irgendwie überraschend selten

00:54:32.560 --> 00:54:34.420
werden solche Sachen gemacht und man kann natürlich

00:54:34.420 --> 00:54:36.420
auch noch dann schummeln und dann sagen,

00:54:36.520 --> 00:54:38.380
okay, wenn Öffnungszeiten eingegeben werden, zeig

00:54:38.380 --> 00:54:40.380
immer als erstes die Öffnungszeiten an und nicht die Ergebnisse,

00:54:40.500 --> 00:54:41.800
die die Suche zurückkommt. Genau.

00:54:43.000 --> 00:54:44.560
Also das ist halt so ein bisschen wie

00:54:44.560 --> 00:54:46.340
wenn man sich vorstellt, man hat eine Firma

00:54:46.340 --> 00:54:47.640
und die hat irgendwie so eine Support

00:54:47.640 --> 00:54:50.280
oder ein Helpdesk oder irgendwie eine

00:54:50.280 --> 00:54:51.620
Support-Hotline oder so,

00:54:52.400 --> 00:54:54.460
dann hat man ja bestimmt auch irgendwie, keine Ahnung,

00:54:54.540 --> 00:54:56.120
wenn man einen neuen Mitarbeiter da einarbeitet,

00:54:56.240 --> 00:54:57.720
dann setzt man den da hin und sagt dem hier so,

00:54:57.840 --> 00:55:01.700
hier ist eine Liste mit den 50 häufigsten Fragen oder Problemen,

00:55:01.700 --> 00:55:03.000
mit denen die Leute zu dir kommen werden

00:55:03.000 --> 00:55:04.560
und da sind die Antworten da drauf.

00:55:05.560 --> 00:55:06.940
Das kann man ja einfach verwenden sozusagen.

00:55:07.040 --> 00:55:08.040
Man wird ja nie auf die Idee kommen,

00:55:08.540 --> 00:55:12.060
ja, die Leute rufen jetzt an und dann sieh halt mal zu irgendwie.

00:55:12.700 --> 00:55:15.520
Dann nimmst du TF-IDF oder dann gehst du an den Aktenschrank hinter dir

00:55:15.520 --> 00:55:16.660
und guckst mal, was dabei rauskommt.

00:55:16.760 --> 00:55:17.800
Das wird halt nicht gut funktionieren.

00:55:19.320 --> 00:55:21.320
Insofern, also die, oft ist es,

00:55:21.400 --> 00:55:22.860
man hat immer so Power-Law-Verteilung.

00:55:23.340 --> 00:55:24.620
Eine was? Eine Power-Law?

00:55:25.060 --> 00:55:26.160
Ja, Power-Law, also

00:55:26.160 --> 00:55:29.180
Potenzmengen-Verteilung, ich weiß gar nicht, wie das

00:55:29.180 --> 00:55:30.300
deutsche Wort dafür ist.

00:55:31.600 --> 00:55:33.200
Dass du, das hat man bei ganz

00:55:33.200 --> 00:55:35.120
vielen Sachen, dass halt 20%

00:55:35.120 --> 00:55:35.460
der

00:55:35.460 --> 00:55:41.080
sozusagen

00:55:41.080 --> 00:55:43.080
Such-, also 20% der,

00:55:43.200 --> 00:55:44.880
also bei Suchmaschinen wäre das wahrscheinlich,

00:55:45.120 --> 00:55:46.720
ich hoffe mal, ich sehe keinen allzu

00:55:46.720 --> 00:55:48.740
offensichtlichen Unsinn,

00:55:49.320 --> 00:55:51.300
Aber das ist halt, 20% der Queries

00:55:51.300 --> 00:55:53.400
machen halt 80% der Suchanfragen aus oder sowas.

00:55:55.180 --> 00:55:57.100
Kommt natürlich auch drauf an. Es gibt wahrscheinlich auch so Maschinen,

00:55:57.240 --> 00:55:59.120
die sehen ganz viele Queries nur einmal

00:55:59.120 --> 00:55:59.780
und dann nie wieder.

00:56:01.060 --> 00:56:03.060
Manchmal ist der Tail halt länger

00:56:03.060 --> 00:56:05.380
und manchmal ist der Tail auch dicker.

00:56:07.500 --> 00:56:09.300
Aber oft ist es so,

00:56:09.440 --> 00:56:11.300
dass eine kleine Anzahl von Queries

00:56:11.300 --> 00:56:13.160
macht halt schon einen großen Teil der Anfragen, die überhaupt

00:56:13.160 --> 00:56:15.300
gestellt werden, aus. Und wenn das halt 100 Stück

00:56:15.300 --> 00:56:17.100
sind, dann kann man die sich halt alle mal angucken

00:56:17.100 --> 00:56:19.020
und sich überlegen, okay, was könnte man den

00:56:19.020 --> 00:56:21.080
Usern, die dauernd diese Anfragen stellen,

00:56:21.180 --> 00:56:22.860
dann vielleicht mal zeigen, was sie interessieren könnte.

00:56:24.180 --> 00:56:25.100
Und das

00:56:25.100 --> 00:56:26.080
hat dann gar nichts mehr mit

00:56:26.080 --> 00:56:28.860
was macht eigentlich die

00:56:28.860 --> 00:56:30.920
Volltext, was macht eigentlich diese

00:56:30.920 --> 00:56:33.380
Software, die Volltextsuche

00:56:33.380 --> 00:56:35.200
macht, sondern wie gehe ich mit diesem Problem

00:56:35.200 --> 00:56:37.260
irgendwie um auf der Seite. Und natürlich

00:56:37.260 --> 00:56:39.720
muss ich dann halt irgendwie eine Art haben, wie ich

00:56:39.720 --> 00:56:41.300
sicherstelle, dass wenn ich jetzt

00:56:41.300 --> 00:56:43.140
irgendwelche Änderungen mache, dass es nicht kaputt geht beim

00:56:43.140 --> 00:56:45.000
nächsten Release und

00:56:45.000 --> 00:56:47.440
ich muss es testen und all diese

00:56:47.440 --> 00:56:50.620
ätzenden Softwareentwicklungs-

00:56:50.620 --> 00:56:51.780
Best Practices und so,

00:56:52.220 --> 00:56:54.180
die man halt einhalten sollte, wenn man

00:56:54.180 --> 00:56:55.940
irgendwie Dinge programmiert. Aber

00:56:55.940 --> 00:56:58.160
wenn man das macht, kriegt man damit auch Ergebnisse, die ganz

00:56:58.160 --> 00:56:59.860
gut sind. Also du würdest dann vielleicht

00:56:59.860 --> 00:57:01.320
ein Django bauen oder so und dann

00:57:01.320 --> 00:57:04.080
einfach an die Suche dann bestimmte

00:57:04.080 --> 00:57:06.020
Dinge, Bedingungen knüpfen, wenn das und das

00:57:06.020 --> 00:57:08.100
steht, dann machst du irgendeine Liste von

00:57:08.100 --> 00:57:10.000
Fragen, denen dann eine Antwort zugeordnet ist und wenn

00:57:10.000 --> 00:57:12.040
das kommt, dann wird die direkt ausgespuckt und ansonsten wird

00:57:12.040 --> 00:57:13.600
dann die Suchmaschine bedient oder sowas.

00:57:14.220 --> 00:57:15.960
Ja, und dann halt nur dann, wenn das

00:57:15.960 --> 00:57:17.760
nicht. Und dann geht es halt

00:57:17.760 --> 00:57:19.780
sozusagen in eine Suchanfrage und dann wird halt

00:57:19.780 --> 00:57:21.840
gerankt nach all den anderen

00:57:21.840 --> 00:57:22.920
Dingen, die man halt auch so da hat.

00:57:23.200 --> 00:57:25.000
Vielleicht ist sogar ein Modell, das irgendwas rankt.

00:57:25.140 --> 00:57:27.420
Aber gut, habe ich jetzt auch noch ein...

00:57:27.420 --> 00:57:29.740
Aber halt irgendwas, wo man sich

00:57:29.740 --> 00:57:31.320
relativ sicher sein kann, dass

00:57:31.320 --> 00:57:34.000
das sinnvoll

00:57:34.000 --> 00:57:35.580
ist. Und erst wenn das alles

00:57:35.580 --> 00:57:37.760
nicht klappt, dann fällt es

00:57:37.760 --> 00:57:38.960
zurück auf sowas wie TF-IDF.

00:57:40.280 --> 00:57:41.940
Aber mit TF-IDF anzufangen,

00:57:42.120 --> 00:57:42.820
das ist eigentlich

00:57:42.820 --> 00:57:43.680
ein...

00:57:43.680 --> 00:57:45.660
ja.

00:57:46.520 --> 00:57:47.800
Ja, okay, keine gute Idee.

00:57:48.260 --> 00:57:50.040
Also du hast gesagt, okay, TFD, das ist das Standard,

00:57:50.200 --> 00:57:52.020
was zum Beispiel ein Elasticsearch oder

00:57:52.020 --> 00:57:53.900
ein Zola als Standard machen, weil das

00:57:53.900 --> 00:57:55.780
ziehen drunter ist, was das irgendwie auch kann, obwohl das

00:57:55.780 --> 00:57:57.640
dieses BM25

00:57:57.640 --> 00:57:59.720
macht. BM25 ist eigentlich sozusagen das, was dann

00:57:59.720 --> 00:58:01.000
wahrscheinlich verwendet wird meistens.

00:58:01.100 --> 00:58:03.840
Aber die Unterschiede sind nicht so

00:58:03.840 --> 00:58:05.780
groß. Also natürlich macht das in gewisser Weise einen großen

00:58:05.780 --> 00:58:07.660
Unterschied. Wenn man jetzt viele Suchanfragen hat

00:58:07.660 --> 00:58:09.780
und eine Seite, wo viel Umsatz ist und dann

00:58:09.780 --> 00:58:11.480
die Ergebnisse ein Prozent besser werden,

00:58:11.640 --> 00:58:13.180
dann ist das ja schon mal super.

00:58:13.680 --> 00:58:15.780
Nur dadurch, dass man das halt ausgetauscht hat,

00:58:17.240 --> 00:58:17.800
ist das ja

00:58:17.800 --> 00:58:19.680
unter Umständen viel Geld, was dann zusätzlich

00:58:19.680 --> 00:58:20.260
reinkommt und so.

00:58:21.460 --> 00:58:23.500
Aber die Änderungen

00:58:23.500 --> 00:58:25.600
an diesen Details, das bringt nicht so

00:58:25.600 --> 00:58:27.140
wahnsinnig viel, ein bisschen was.

00:58:27.940 --> 00:58:29.520
Änderungen an, man

00:58:29.520 --> 00:58:31.620
bezieht jetzt zum Beispiel implizites User

00:58:31.620 --> 00:58:33.540
Feedback mit ein, wie zum Beispiel Klicks

00:58:33.540 --> 00:58:34.820
oder halt irgendwie

00:58:34.820 --> 00:58:37.240
welche Price Range jemand angegeben hat

00:58:37.240 --> 00:58:39.600
oder solche Dinge, das bringt halt viel, viel

00:58:39.600 --> 00:58:41.500
mehr. Ja, da kann man ganz, ganz viele

00:58:41.500 --> 00:58:43.440
tolle Informationen eigentlich sammeln und verwenden.

00:58:43.680 --> 00:58:45.280
Da kann man eine richtige Wissenschaft draus machen.

00:58:45.700 --> 00:58:46.900
Ich glaube, da sind auch ziemlich viele Marketeers,

00:58:46.940 --> 00:58:48.440
die sich mit sowas auseinandersetzen irgendwie.

00:58:48.960 --> 00:58:50.120
Die dann irgendwie Interesse dann haben,

00:58:50.180 --> 00:58:51.640
wie man das in besser bastelt.

00:58:51.740 --> 00:58:52.280
Interessant, ja.

00:58:53.440 --> 00:58:53.840
Ja, ja.

00:58:53.960 --> 00:58:55.660
Das ist ja auch so ein Thema,

00:58:55.760 --> 00:58:56.820
wenn man jetzt selber sozusagen

00:58:56.820 --> 00:58:59.640
nicht in der Rolle von einer Suchmaschine ist,

00:58:59.820 --> 00:59:03.940
die Leuten irgendwie Sachen finden möchte,

00:59:04.080 --> 00:59:06.300
sondern umgekehrt der Rolle des Dokuments,

00:59:06.400 --> 00:59:07.900
das gefunden werden möchte, sozusagen.

00:59:08.060 --> 00:59:08.820
Also wenn man eine Webseite hat,

00:59:08.860 --> 00:59:11.060
die halt über Google zum Beispiel gefunden werden will oder so

00:59:11.060 --> 00:59:12.220
und dann hat man dieses SEO-Problem.

00:59:13.120 --> 00:59:15.180
Da gibt es ja auch ganz unterschiedliche

00:59:15.180 --> 00:59:17.920
Aspekte.

00:59:18.120 --> 00:59:19.260
Und auch da ist es halt so, dass

00:59:19.260 --> 00:59:20.540
üblicherweise

00:59:20.540 --> 00:59:23.440
wird dann halt zu sehr auf die

00:59:23.440 --> 00:59:24.300
technischen Aspekte

00:59:24.300 --> 00:59:27.420
fokussiert. Und dann wird halt

00:59:27.420 --> 00:59:29.220
irgendein Quatsch gemacht, weil der

00:59:29.220 --> 00:59:31.100
gerade halt irgendwie Mode ist oder hip oder

00:59:31.100 --> 00:59:33.440
wo das Gerücht geht, das kann man jetzt machen

00:59:33.440 --> 00:59:35.520
und das ist voll toll. Und dann wird man sofort

00:59:35.520 --> 00:59:37.000
bei Google super gerankt.

00:59:37.640 --> 00:59:39.380
Und das funktioniert zwei Monate und dann kommt der nächste Patch

00:59:39.380 --> 00:59:41.560
und dann ist man down. Und dann werden alle gelöscht.

00:59:41.660 --> 00:59:42.800
Alle Ergebnisse, die man vorhat, das ist super.

00:59:43.120 --> 00:59:44.900
Also ich habe gehört, Content ist King.

00:59:45.060 --> 00:59:46.980
Ja, also Google versucht, also zumindest das Team versucht,

00:59:47.040 --> 00:59:48.380
immer auf den besten Content zu optimieren.

00:59:48.480 --> 00:59:50.180
Schmeißen alle Sachen raus, die jetzt so Leute ausdenken.

00:59:50.640 --> 00:59:52.940
Das heißt, langfristige Strategie wäre tatsächlich,

00:59:53.060 --> 00:59:56.420
qualitativen Content aufzustellen, der dann auch gut suchbar ist,

00:59:56.520 --> 00:59:59.240
der mit solchen TF-IDF-Sachen vielleicht dann auch irgendwie klarkommt,

00:59:59.240 --> 01:00:03.060
aber der dann durch die, also vielleicht haben die einen Qualitäts-Ranker,

01:00:03.120 --> 01:00:07.240
der sich irgendwie durch irgendwelche Daten ergibt und den sie dann da mitbauen.

01:00:08.260 --> 01:00:09.700
Ja, aber was sie halt machen.

01:00:10.740 --> 01:00:31.000
Also Internetsuche ist ja sowieso nochmal was anderes als Volltextsuche, weil man ja da noch andere Dinge mit einbezieht, also die Linkstruktur. Früher war es ja vielleicht immer so, dass man ganz viele Backlinks haben wollte oder sowas, dass man ganz viel gelenkt wurde, weil man auf irgendwelchen Seiten stand und wenn man dann irgendwie dieser zentralste Knoten in diesem Netz war, war man irgendwie der Relevanteste oder so. Und das ist jetzt vielleicht auch noch ein bisschen anders.

01:00:32.720 --> 01:00:55.740
Ja, aber das zeigt ja genau, dass halt die reine TF-IDF-Geschichte ist halt nicht unbedingt, das führt halt nicht zu total super Ergebnissen, sondern Google waren halt die Ersten, die mehr Informationen reingenommen haben und ich würde sagen, natürlich, das ist absolut ganz stinknormal, Volltextsuche eigentlich alles, aber Google waren halt die Ersten, die jetzt nicht nur TF-IDF oder irgendwas, eine Variation davon verwendet haben.

01:00:55.740 --> 01:00:57.020
Google hat den PageRank eingeführt.

01:00:57.040 --> 01:00:58.760
Sondern sie haben einen PageRank, genau.

01:00:59.120 --> 01:01:02.460
Was ist denn der PageRank? Das hat gar nichts mit Seiten zu tun.

01:01:02.540 --> 01:01:04.420
Ja, genau, genau. Deshalb könnte man

01:01:04.420 --> 01:01:05.360
denken, dass es das mit

01:01:05.360 --> 01:01:08.300
dem, so wurde es wahrscheinlich auch oft

01:01:08.300 --> 01:01:10.480
interpretiert, mit dem Rank der Pages

01:01:10.480 --> 01:01:11.680
zu tun hat, die man halt so hat.

01:01:12.420 --> 01:01:14.340
Dann gab es auch so irgendwie Browser-Plugins, die einem

01:01:14.340 --> 01:01:16.400
den eigenen Page-Rank auf der Seite angezeigt haben

01:01:16.400 --> 01:01:17.660
und so. Aber nein, das

01:01:17.660 --> 01:01:20.200
Wort kommt tatsächlich von Larry Page,

01:01:20.400 --> 01:01:22.540
also einem der beiden Gründer von Google,

01:01:22.680 --> 01:01:24.440
der das halt in seiner Doktorarbeit

01:01:24.440 --> 01:01:26.140
irgendwie einen neuen

01:01:26.140 --> 01:01:28.500
Algorithmus irgendwie vorgestellt hat für

01:01:28.500 --> 01:01:30.420
das Ding

01:01:30.420 --> 01:01:32.040
auszurechnen in

01:01:32.040 --> 01:01:34.240
großen Matrizen halt Eigenwerte

01:01:34.240 --> 01:01:36.340
auszurechnen. Also ich glaube, das ist irgendwie Power Iteration

01:01:36.340 --> 01:01:36.700
oder so.

01:01:38.040 --> 01:01:40.600
Du hast gerade noch zwei Sachen gesagt. Einmal dieses Power-Dings,

01:01:40.660 --> 01:01:41.820
das habe ich jetzt schon wieder vergessen, wie es hieß,

01:01:42.240 --> 01:01:44.320
und gerade Eigenwerte berechnen aus

01:01:44.320 --> 01:01:46.480
Matrizen mit PageRank. Vielleicht erzählen

01:01:46.480 --> 01:01:48.120
wir das nochmal als einzelne kleine

01:01:48.120 --> 01:01:49.760
Subkapitel.

01:01:49.940 --> 01:01:52.060
Ich weiß gar nicht, ob es so relevant ist.

01:01:52.220 --> 01:01:54.300
Ich glaube, man kann das auch, wenn man das in Detail

01:01:54.300 --> 01:01:55.840
irgendwie, dann wird das

01:01:55.840 --> 01:01:58.320
relativ trocken und langweilig. Also ich meine, im Grunde

01:01:58.320 --> 01:02:00.260
ist, was es tut, ist

01:02:00.260 --> 01:02:02.320
relativ einfach erklärt.

01:02:03.120 --> 01:02:04.400
Es hat was zu tun mit, also man kann

01:02:04.400 --> 01:02:06.640
den Link grafen,

01:02:06.820 --> 01:02:08.420
das Web, also das Web ist im Grunde

01:02:08.420 --> 01:02:09.980
ein Graph. Eine verknüpfte

01:02:09.980 --> 01:02:12.280
Knotenpunkte, die durch Linien

01:02:12.280 --> 01:02:13.920
wieder verknüpft sind, das sind die Linien,

01:02:14.080 --> 01:02:15.040
die Links, die aufeinander steigen.

01:02:15.040 --> 01:02:17.280
Die Definitionen sind länger aus Knoten und Kanten und

01:02:17.280 --> 01:02:19.940
es gibt Gerichtete, wo das Web

01:02:19.940 --> 01:02:21.800
ist ein gerichteter Graph. Also ich kann halt

01:02:21.800 --> 01:02:23.800
auf eine Seite linken und die linken nicht auf mich zurück.

01:02:25.420 --> 01:02:27.860
ja, es gibt

01:02:27.860 --> 01:02:29.740
jetzt, das Ding hat bestimmte

01:02:29.740 --> 01:02:31.680
Eigenschaften, die es halt besonders machen, also

01:02:31.680 --> 01:02:33.840
zum Beispiel der Linkgraf des Web ist halt super spars,

01:02:34.120 --> 01:02:34.900
das ist halt die meisten

01:02:34.900 --> 01:02:37.760
Seiten haben nur Verbindungen zu ganz

01:02:37.760 --> 01:02:39.240
wenigen anderen, ja, aber

01:02:39.240 --> 01:02:41.640
es gibt ja auch Graphen, wo alle miteinander irgendwie

01:02:41.640 --> 01:02:43.140
verbunden sind, das ist beim Web nicht so, die

01:02:43.140 --> 01:02:45.040
zu den allermeisten Seiten habe ich eben keine Links

01:02:45.040 --> 01:02:47.760
und ich kann

01:02:47.760 --> 01:02:49.680
den als Matrix darstellen, indem ich sage, okay, alle

01:02:49.680 --> 01:02:51.780
Webseiten oder Knoten

01:02:51.780 --> 01:02:53.580
sind halt irgendwie die Zeilen und Spalten

01:02:53.580 --> 01:02:55.960
der großen Matrix und

01:02:55.960 --> 01:02:57.760
ja, wenn ich einen Link

01:02:57.760 --> 01:02:59.640
habe, dann trage ich da jetzt zum Beispiel eine 1

01:02:59.640 --> 01:03:01.760
ein in der entsprechenden

01:03:01.760 --> 01:03:03.600
Zeile und Spalte. Also wenn ich halt

01:03:03.600 --> 01:03:05.560
von X nach Y... Also in der Zeit kommt deine 1, wenn ich

01:03:05.560 --> 01:03:07.520
von meiner Seite auf deine Seite link höre,

01:03:07.580 --> 01:03:08.500
dann steht da 1. Genau.

01:03:09.800 --> 01:03:11.560
Ja, und das kann ich für das gesamte Web

01:03:11.560 --> 01:03:12.880
machen und das in eine Matrix packen.

01:03:13.460 --> 01:03:14.680
Was natürlich ein bisschen schwierig ist.

01:03:15.400 --> 01:03:17.560
Auch da kann ich halt nutzen, dass das Ding spars

01:03:17.560 --> 01:03:19.620
ist und dass die allermeisten Werte 0 sind. Und die, die 0

01:03:19.620 --> 01:03:21.720
sind, die schreibe ich halt einfach nur irgendwo in Höhe.

01:03:22.000 --> 01:03:22.740
Und dann kann ich mir die ganz

01:03:22.740 --> 01:03:25.120
sparen, die irgendwo, muss ich die nicht speichern.

01:03:25.760 --> 01:03:27.440
Das heißt, ich muss ja tatsächlich sozusagen nur da, wo

01:03:27.440 --> 01:03:28.420
Links sind, irgendwas speichern.

01:03:29.580 --> 01:03:33.340
Und ja, dann kann ich zum Beispiel im PageRank ausrechnen,

01:03:33.740 --> 01:03:39.480
ist einfach nur sozusagen ein Maß für die Wahrscheinlichkeit,

01:03:39.480 --> 01:03:42.580
wenn ich einen Random Walk über diesen Graphen mache,

01:03:43.240 --> 01:03:46.520
auf dem Ding vorbeizukommen.

01:03:46.580 --> 01:03:48.640
Also wenn ich zufällig irgendwo durchs Internet zirpe,

01:03:48.920 --> 01:03:51.440
mit irgendeiner zufälligen URL, mit der ich angefangen habe,

01:03:51.540 --> 01:03:53.380
komme ich dann dahin, wo ich hin will?

01:03:53.760 --> 01:03:53.900
Ja.

01:03:54.340 --> 01:03:55.260
Oder gibt es einen Startpunkt?

01:03:55.260 --> 01:03:56.240
Ja, laufe ich da drüber.

01:03:56.640 --> 01:03:56.940
Ja, genau.

01:03:57.500 --> 01:03:58.580
Laufe ich mir diese Seite, ja, genau.

01:03:58.840 --> 01:03:59.660
Also gibt es einen Startpunkt?

01:04:00.620 --> 01:04:02.200
Nö, das fängt halt irgendwo an.

01:04:02.220 --> 01:04:03.040
Fängt sich einfach irgendwo durch.

01:04:03.200 --> 01:04:04.240
Ja, random, ja.

01:04:04.340 --> 01:04:06.220
Ja, okay, Wikipedia, Artikel 1, 2, 3, 4, 5,

01:04:06.260 --> 01:04:07.680
querverweist auf irgendeine Quelle,

01:04:07.800 --> 01:04:08.780
die ich dann auf irgendeinem Nachrichtenportal,

01:04:08.820 --> 01:04:09.580
das sind auch irgendeine, ja.

01:04:10.680 --> 01:04:16.240
Und was das Ding im Grunde sozusagen abbildet,

01:04:16.240 --> 01:04:20.740
ist, wie wichtig, wie zentral ist eigentlich eine Seite.

01:04:23.980 --> 01:04:25.380
Also wie tief in diesem Knoten,

01:04:25.400 --> 01:04:27.200
wenn man sich das Web jetzt doch wieder als Knoten vorstellt

01:04:27.200 --> 01:04:29.020
oder sowas. Und dann der zentralste

01:04:29.020 --> 01:04:30.900
Knoten, welche Seite ist das? Ist das wahrscheinlich mittlerweile Google?

01:04:31.000 --> 01:04:32.900
Ich weiß es nicht. Gibt es da, weißt du das?

01:04:33.320 --> 01:04:34.940
Gibt es das? Keine Ahnung.

01:04:35.020 --> 01:04:36.720
Im größten Page-Track müsste dann ja eigentlich

01:04:36.720 --> 01:04:38.040
Google selber sein.

01:04:39.000 --> 01:04:40.840
Wikipedia ist immer weiter oben, aber Google,

01:04:41.020 --> 01:04:42.120
nee, glaube ich gar nicht mal.

01:04:43.220 --> 01:04:44.000
Google, die

01:04:44.000 --> 01:04:46.340
Links, die

01:04:46.340 --> 01:04:48.940
Google ausgibt, sind auch

01:04:48.940 --> 01:04:51.160
nicht, genau, die gehen da nicht mit in den Graphen rein.

01:04:51.340 --> 01:04:52.560
Ja, okay. Also,

01:04:52.920 --> 01:04:54.180
ich weiß es nicht.

01:04:55.040 --> 01:04:56.480
Aber ist auch eigentlich egal.

01:04:57.200 --> 01:05:16.800
Ja, aber wenn man das jetzt kombiniert mit eben TF-IDF geschickt, dann ist das halt viel besser, als wenn ich das nur, wenn ich nur TF-IDF nehme, weil es halt in gewisser Weise ein Maß dafür, ja sozusagen, wie wichtig ist diese Seite eigentlich insgesamt.

01:05:16.800 --> 01:05:18.500
und dann kombiniere ich halt eine lokale Geschichte

01:05:18.500 --> 01:05:21.100
ETF-EDF mit irgendwie einer eher globalen

01:05:21.100 --> 01:05:21.380
Geschichte

01:05:21.380 --> 01:05:24.720
und das funktioniert dann schon ganz gut und das

01:05:24.720 --> 01:05:26.500
führt halt dazu, dass ich eben solche

01:05:26.500 --> 01:05:28.160
simplen, ich

01:05:28.160 --> 01:05:30.680
schreibe jetzt fünfmal irgendein Keyword auf eine

01:05:30.680 --> 01:05:32.540
Seite, spiele rein, halt dann nicht mehr funktionieren.

01:05:32.980 --> 01:05:34.800
Weil dadurch werde ich halt nicht zentral

01:05:34.800 --> 01:05:35.920
in dem Graph, dass ich das tue.

01:05:36.660 --> 01:05:38.660
Aber auf der anderen Seite ist das halt das, was dann

01:05:38.660 --> 01:05:40.620
die Leute mit den Backlinks immer meinen, also wenn du halt

01:05:40.620 --> 01:05:42.720
ganz viele Links hast, die auf dich zeigen,

01:05:42.840 --> 01:05:44.100
dann wirst du natürlich zentraler.

01:05:44.800 --> 01:05:46.100
Aber jetzt kannst du die Links natürlich auch wieder

01:05:46.100 --> 01:05:47.920
Gewächten und es ist ein Katz-und-Maus-Spiel

01:05:47.920 --> 01:05:50.120
und keine Ahnung. Aber

01:05:50.120 --> 01:05:52.120
Google verwendet jetzt auch nicht

01:05:52.120 --> 01:05:53.340
nur PageRank und irgendwie sowas

01:05:53.340 --> 01:05:56.060
IDF-artiges oder so, sondern die

01:05:56.060 --> 01:05:58.220
verwenden halt ganz, ganz viele. Ich hab's gerade mal aufgemacht, der PageRank

01:05:58.220 --> 01:06:00.040
gibt's jetzt irgendwie 9

01:06:00.040 --> 01:06:01.920
und 10, also das werden jetzt irgendwie nummerlich

01:06:01.920 --> 01:06:04.120
gestellt und PageRank 10, das hat tatsächlich Google

01:06:04.120 --> 01:06:05.340
kommen. Und

01:06:05.340 --> 01:06:07.400
Government of India, India GovN.

01:06:08.420 --> 01:06:08.740
CNN.

01:06:10.200 --> 01:06:11.020
Und ja,

01:06:11.660 --> 01:06:13.120
noch das W3-Konzert. Und dann gibt's

01:06:13.120 --> 01:06:14.720
PageRank 9, ist auch Python

01:06:14.720 --> 01:06:16.420
dabei, also Python.org.

01:06:16.680 --> 01:06:20.660
Also wenn du einen Link von Python.org

01:06:20.660 --> 01:06:21.240
kriegst,

01:06:21.440 --> 01:06:21.680
dann

01:06:21.680 --> 01:06:23.200
voll gut.

01:06:24.960 --> 01:06:26.040
Das zählt was.

01:06:26.040 --> 01:06:27.100
Naja, also

01:06:27.100 --> 01:06:29.920
tatsächlich, heutzutage ist es so,

01:06:29.980 --> 01:06:31.760
es wird ganz, ganz viel, also nicht nur diese

01:06:31.760 --> 01:06:33.180
beiden Werte, also nehmen wir an,

01:06:33.680 --> 01:06:35.520
würdest du jetzt nur TF-EDF und den Patchrank haben,

01:06:35.580 --> 01:06:37.700
dann hättest du zwei, oder die sind im

01:06:37.700 --> 01:06:39.300
Suchmaschinenbereich, nennt man das mal Signale,

01:06:39.880 --> 01:06:41.360
im Machine Learning-Bereich würde man das Features nennen,

01:06:42.320 --> 01:06:49.260
sondern Google sammelt eher so 100, sagen sie so,

01:06:49.420 --> 01:06:50.880
aber tatsächlich sind es wahrscheinlich noch ein paar mehr.

01:06:52.140 --> 01:06:56.920
Und das Ranking ergibt sich daraus, dass jetzt diese Signale,

01:06:57.000 --> 01:06:59.880
von denen ein paar aus der Query kommen

01:06:59.880 --> 01:07:02.460
und möglicherweise auch aus dem User, der die Query gestellt hat,

01:07:02.460 --> 01:07:03.700
ein paar kommen aus dem Dokument,

01:07:04.020 --> 01:07:06.240
eben wie sowas wie PageRank

01:07:06.240 --> 01:07:11.100
oder kommt die Query irgendwie in der Domain vor oder sowas,

01:07:11.900 --> 01:07:13.880
Ein paar kommen aus einer Kombination von Query

01:07:13.880 --> 01:07:15.980
und Dokument. TF-IDF wäre

01:07:15.980 --> 01:07:17.900
so ein Fall, da multipliziert man das ja miteinander.

01:07:19.160 --> 01:07:20.140
Und jetzt hat man

01:07:20.140 --> 01:07:22.000
halt sozusagen für jedes Suchergebnis

01:07:22.000 --> 01:07:24.040
so einen

01:07:24.040 --> 01:07:25.980
Vektor mit irgendwie vielleicht 100

01:07:25.980 --> 01:07:27.920
Einträgen oder 200 oder 500

01:07:27.920 --> 01:07:29.900
oder wie auch immer. Und dann hat man halt

01:07:29.900 --> 01:07:31.940
üblicherweise ein Modell, ist auch völlig

01:07:31.940 --> 01:07:33.980
egal, ob das jetzt ein Machine Learning trainiertes Modell

01:07:33.980 --> 01:07:36.020
ist oder ob das ein Modell ist, das Leute von Hand

01:07:36.020 --> 01:07:37.960
getunt haben, es kommt aufs Gleiche

01:07:37.960 --> 01:07:38.640
raus letztlich,

01:07:40.140 --> 01:07:43.020
dass diese Vektoren halt in Reihenfolge

01:07:43.020 --> 01:07:44.680
bringt und irgendwie halt

01:07:44.680 --> 01:07:46.380
einen

01:07:46.380 --> 01:07:48.560
endgültigen Score halt ausgerechnet.

01:07:49.900 --> 01:07:50.920
Im simpelsten

01:07:50.920 --> 01:07:52.840
Fall könnte das einfach eine gewichtete Summe sein,

01:07:52.900 --> 01:07:53.260
zum Beispiel.

01:07:54.960 --> 01:07:56.920
Du sagst halt, wie wichtig ist mir jedes

01:07:56.920 --> 01:07:58.880
einzelne Feature, dann machst du halt die Summe

01:07:58.880 --> 01:08:01.020
drüber und

01:08:01.020 --> 01:08:02.940
normierst es vielleicht noch

01:08:02.940 --> 01:08:04.360
irgendwie oder so und

01:08:04.360 --> 01:08:06.040
dann sortierst du halt nach der

01:08:06.040 --> 01:08:08.340
Summe.

01:08:09.020 --> 01:08:10.840
könnte man machen. Oder man kann halt dieses Modell

01:08:10.840 --> 01:08:11.680
auch irgendwie trainieren

01:08:11.680 --> 01:08:14.940
und kriegst dann halt

01:08:14.940 --> 01:08:17.260
irgendwie am Schluss eine Sortierreihenfolge

01:08:17.260 --> 01:08:18.220
und

01:08:18.220 --> 01:08:21.080
das ist halt eher so das, was heute gemacht wird.

01:08:21.660 --> 01:08:23.220
Das ist lustigerweise

01:08:23.220 --> 01:08:25.060
aber in den ganzen, also zumindest

01:08:25.060 --> 01:08:26.840
ich weiß nicht, ob es kommerzielle Suchmaschinen gibt,

01:08:27.140 --> 01:08:28.880
die sowas ähnliches machen.

01:08:29.900 --> 01:08:30.520
Die ganzen

01:08:30.520 --> 01:08:32.920
Open-Source-Suchmaschinen können das

01:08:32.920 --> 01:08:34.860
nicht. Also

01:08:34.860 --> 01:08:36.940
so ein bisschen. Also man kann so ein bisschen was machen,

01:08:37.700 --> 01:08:38.620
aber so ein bisschen

01:08:38.620 --> 01:08:40.600
Woosh, aber so richtig. Aber so richtig toll

01:08:40.600 --> 01:08:42.420
können die das, also so cool wie

01:08:42.420 --> 01:08:44.480
irgendwie die Großen dazu machen, machen die das eigentlich

01:08:44.480 --> 01:08:46.180
nicht. Das ist auch so etwas. Also mich

01:08:46.180 --> 01:08:48.380
ärgert ja so ein bisschen oder mich wundert, dass

01:08:48.380 --> 01:08:50.480
es da so wenig, also es ist viele Dinge, die halt so

01:08:50.480 --> 01:08:52.440
im Bereich Websuche

01:08:52.440 --> 01:08:53.820
oder so halt irgendwie

01:08:53.820 --> 01:08:56.080
schon lange gemacht werden

01:08:56.080 --> 01:08:57.400
oder da,

01:08:58.000 --> 01:09:00.240
das kommt halt nie so richtig an.

01:09:01.240 --> 01:09:02.360
Also was mich zum Beispiel wundert

01:09:02.360 --> 01:09:04.480
ist, was Google seit 2004 glaube

01:09:04.480 --> 01:09:06.360
ich macht oder so, die halten ihre NTCs alle

01:09:06.360 --> 01:09:08.480
nur noch im Hauptspeicher. Die gehen gar nicht

01:09:08.480 --> 01:09:10.400
Ja, auf die Platte, weil Platte ist immer so ein bisschen blöd,

01:09:10.560 --> 01:09:12.200
weil du kriegst halt

01:09:12.200 --> 01:09:14.040
Latenzen, werden halt unvorhersehbar.

01:09:15.120 --> 01:09:16.340
Plötzlich liegen halt

01:09:16.340 --> 01:09:18.280
deine Sektoren ungünstig, du musst

01:09:18.280 --> 01:09:20.220
warten, bis das da vorbeikommt und

01:09:20.220 --> 01:09:21.700
du musst aber viele Sachen miteinander

01:09:21.700 --> 01:09:23.380
mergen und jetzt

01:09:23.380 --> 01:09:26.600
liegen die Kombinationen

01:09:26.600 --> 01:09:28.520
von, die Sektoren

01:09:28.520 --> 01:09:30.240
sind halt ungünstig korreliert und plötzlich musst du halt auf

01:09:30.240 --> 01:09:31.160
eine Query sehr lange warten.

01:09:32.020 --> 01:09:33.880
Das ist eigentlich totaler Mist. Du willst eigentlich

01:09:33.880 --> 01:09:36.260
relativ sicher sein können, dass das halt nach so und so viel

01:09:36.260 --> 01:09:38.120
Millisekunden

01:09:38.120 --> 01:09:40.020
oder so halt durch ist und das kannst du eigentlich nur

01:09:40.020 --> 01:09:42.060
dann garantieren, wenn das ganze Zeug immer im Hauptspeicher liegt

01:09:42.060 --> 01:09:44.260
und wenn du noch ein paar andere Sachen irgendwie berücksichtigt

01:09:44.260 --> 01:09:46.100
hast und Google, ich glaube auch, das ist der

01:09:46.100 --> 01:09:48.020
Grund, warum Google das so macht, die möchten

01:09:48.020 --> 01:09:50.340
halt wissen, okay, wenn jemand eine Suchmanfrage

01:09:50.340 --> 01:09:51.760
eingegeben hat und wir dann das an

01:09:51.760 --> 01:09:54.060
diese tausend Server, die halt jeweils

01:09:54.060 --> 01:09:55.960
nur einen Teil vom Index haben, schicken

01:09:55.960 --> 01:09:58.140
und dann kommt ein Ergebnis zurück, dann wissen wir halt, nach 20 Millisekunden

01:09:58.140 --> 01:09:58.760
ist das halt durch.

01:09:59.840 --> 01:10:01.980
Wenn da Platten im Spiel wären, könnte man das überhaupt nicht mehr

01:10:01.980 --> 01:10:02.760
garantieren, weil

01:10:02.760 --> 01:10:05.940
hast du halt Pech und irgendwo musst du halt auf eine

01:10:05.940 --> 01:10:07.900
Platte warten und die

01:10:07.900 --> 01:10:09.620
Seek-Time da ist halt bei Platten auch

01:10:09.620 --> 01:10:11.320
sind halt mal 10 Millisekunden oder noch mehr

01:10:11.320 --> 01:10:13.960
und dann wird das Gesamtergebnis

01:10:13.960 --> 01:10:15.780
halt langsam dadurch, das ist halt irgendwie kacke, aber

01:10:15.780 --> 01:10:17.620
jetzt, wenn man sowas wie Lucene hat oder

01:10:17.620 --> 01:10:19.760
Elasticsearch oder Sola, da kann einem das

01:10:19.760 --> 01:10:21.660
durchaus passieren, also wenn man Pech hat, dann ist

01:10:21.660 --> 01:10:23.700
eine Query halt langsam und zwar auch nicht

01:10:23.700 --> 01:10:25.720
deterministisch, irgendwie bestimmte Queries, sondern halt

01:10:25.720 --> 01:10:27.560
irgendeine, was halt

01:10:27.560 --> 01:10:29.240
naja, aber

01:10:29.240 --> 01:10:31.720
das ist halt so designt, also es kann

01:10:31.720 --> 01:10:33.560
auch sein, dass man mittlerweile sagen kann, okay, nur

01:10:33.560 --> 01:10:35.820
dieser Index soll

01:10:35.820 --> 01:10:37.700
in Memory liegen oder so, aber ich weiß es nicht

01:10:37.700 --> 01:10:39.840
mich wundert, dass das halt, weil

01:10:39.840 --> 01:10:41.680
bei den Hauptspeichergrößen heutzutage sollte das

01:10:41.680 --> 01:10:43.100
überhaupt kein Problem sein, dass man halt

01:10:43.100 --> 01:10:45.920
den Index halt im Hauptspeicher hält

01:10:45.920 --> 01:10:47.820
und wenn das nicht reicht, dann vielleicht mal mehr Maschinen

01:10:47.820 --> 01:10:49.280
dazu, ist auch, warum

01:10:49.280 --> 01:10:51.740
warum muss das auf

01:10:51.740 --> 01:10:53.740
wie liegt man das auf die Platte

01:10:53.740 --> 01:10:55.700
optimiert sein, das macht doch heutzutage

01:10:55.700 --> 01:10:57.680
eigentlich keinen großen Sinn mehr, oh, da hab ich

01:10:57.680 --> 01:10:59.300
noch was vergessen, bei den

01:10:59.300 --> 01:11:02.960
es gibt ein Ding, Redis

01:11:02.960 --> 01:11:05.780
das hatten wir jetzt auch schon ein paar Mal, das kann

01:11:05.780 --> 01:11:07.820
auch Volltext-Suche mittlerweile

01:11:07.820 --> 01:11:08.260
ganz gut.

01:11:09.860 --> 01:11:11.480
Adrede ist das ein Cache

01:11:11.480 --> 01:11:13.600
für bestimmte Dinge,

01:11:13.840 --> 01:11:15.720
die als Key-Value

01:11:15.720 --> 01:11:17.220
kombinieren. Key-Value ist aber

01:11:17.220 --> 01:11:19.460
nicht nur das, das kann auch ein paar andere Datenstrukturen

01:11:19.460 --> 01:11:21.640
und das

01:11:21.640 --> 01:11:23.480
liegt tatsächlich nur im Hauptspeicher und das kann auch

01:11:23.480 --> 01:11:25.500
Volltext-Suche und das wollte ich mir auch schon immer mal angucken,

01:11:25.780 --> 01:11:27.540
aber habe ich es in letzter Zeit

01:11:27.540 --> 01:11:29.600
nicht geschafft. Es kann sein, dass das

01:11:29.600 --> 01:11:31.540
mittlerweile vielleicht ein bisschen sogar das erfüllt, was

01:11:31.540 --> 01:11:32.340
ich irgendwie gerne hätte.

01:11:34.660 --> 01:11:34.840
Ja,

01:11:35.260 --> 01:11:38.120
aber Luciden ist halt

01:11:38.120 --> 01:11:40.080
tatsächlich eher so drauf optimiert, dass es

01:11:40.080 --> 01:11:41.060
auf der Platte gut aussieht.

01:11:42.520 --> 01:11:43.660
Und ja,

01:11:44.640 --> 01:11:46.020
also da hängt das

01:11:46.020 --> 01:11:48.000
irgendwie so ein bisschen hinterher und es hängt halt auch

01:11:48.000 --> 01:11:49.300
hinterher bei solchen Sachen wie,

01:11:50.060 --> 01:11:52.120
also im Machine Learning Bereich läuft dieses ganze Thema immer

01:11:52.120 --> 01:11:54.060
unter dem Namen Learning

01:11:54.060 --> 01:11:55.940
to Rank, also sozusagen,

01:11:56.080 --> 01:11:57.920
dass du halt, du hast halt Features

01:11:57.920 --> 01:12:00.080
und du hast halt jetzt

01:12:00.080 --> 01:12:02.080
die Training, deine Trainingsdaten sehen immer so aus, dass du

01:12:02.080 --> 01:12:03.860
Mengen hast von

01:12:03.860 --> 01:12:04.920
Queries und dann

01:12:05.260 --> 01:12:10.300
ergebnislisten wo halt leute also redaktionell notiert ist wie gut was

01:12:10.300 --> 01:12:12.150
waren, wie relevant sind die Ergebnisse, also

01:12:12.150 --> 01:12:14.210
wo Leute meistens auf einer Skala von 0 bis

01:12:14.210 --> 01:12:15.490
4 oder 0 bis 3

01:12:15.490 --> 01:12:18.030
0 ist überhaupt nicht relevant

01:12:18.030 --> 01:12:20.270
zu 3 oder 4 oder das höchste ist halt

01:12:20.270 --> 01:12:21.790
super relevant für diese Anfrage

01:12:21.790 --> 01:12:25.930
Ergebnislisten annotiert haben

01:12:25.930 --> 01:12:27.970
und du dann halt hinterher

01:12:27.970 --> 01:12:30.150
sozusagen testen kannst, wenn du jetzt

01:12:30.150 --> 01:12:31.850
was an deiner Suchmaschine geändert hast

01:12:31.850 --> 01:12:34.010
und fütterst sie halt mit den

01:12:34.010 --> 01:12:36.190
Queries und guckst dir die Result-Listen an

01:12:36.190 --> 01:12:38.010
dann kannst du halt einen Score ausrechnen

01:12:38.010 --> 01:12:40.210
da gibt es dann unterschiedliche

01:12:40.210 --> 01:12:41.530
die Master, die man benutzen kann.

01:12:43.050 --> 01:12:43.230
Ja,

01:12:43.530 --> 01:12:45.570
Average Precision, Normalized,

01:12:45.690 --> 01:12:47.070
Cumulative Discounted Gain,

01:12:47.850 --> 01:12:50.190
Expected Reciprocal

01:12:50.190 --> 01:12:51.110
Rank oder was auch immer.

01:12:51.690 --> 01:12:53.610
Ich wundere mich jetzt dabei, mal kurz die alle drei

01:12:53.610 --> 01:12:55.830
jetzt erklären. Aber im Grunde sind das alles Master

01:12:55.830 --> 01:12:57.370
dafür, wie gut

01:12:57.370 --> 01:12:58.770
ist jetzt sozusagen

01:12:58.770 --> 01:13:00.650
dieses

01:13:00.650 --> 01:13:03.670
Ergebnis

01:13:03.670 --> 01:13:04.650
für die Anfrage.

01:13:05.890 --> 01:13:06.090
Und

01:13:06.090 --> 01:13:09.710
wenn ich halt über viele

01:13:09.710 --> 01:13:11.410
schaffe, besser zu sein als ein anderes

01:13:11.410 --> 01:13:13.590
Verfahren, dann rank ich halt

01:13:13.590 --> 01:13:15.550
besser. Dann habe ich halt ein besseres

01:13:15.550 --> 01:13:17.530
Ergebnis und das ist ja etwas, was sich dann

01:13:17.530 --> 01:13:19.830
auch direkt bemerkbar macht in User-Zufriedenheit

01:13:19.830 --> 01:13:21.670
oder Geld oder was auch immer man halt

01:13:21.670 --> 01:13:22.670
aufnehmen möchte.

01:13:25.170 --> 01:13:25.210
Und

01:13:25.210 --> 01:13:27.670
naja,

01:13:29.430 --> 01:13:31.150
genau,

01:13:32.290 --> 01:13:33.550
normalerweise, wenn ich jetzt

01:13:33.550 --> 01:13:35.470
so ein, also Maschinen-Logging-Modelle funktionieren da wirklich

01:13:35.470 --> 01:13:36.770
besser. Also es gibt da schon

01:13:36.770 --> 01:13:38.950
lange auch Wettbewerbe.

01:13:39.330 --> 01:13:41.330
Ich glaube, ich habe mal in einer Learning for Ranked Challenge mitgemacht.

01:13:41.410 --> 01:13:43.290
Das war 2009 oder so.

01:13:45.750 --> 01:13:47.390
Und wenn man das vergleicht,

01:13:47.510 --> 01:13:49.330
also was... Das ist schon über 10 Jahre her, das ist schon

01:13:49.330 --> 01:13:50.490
klar. Ja, das ist krass, ne?

01:13:50.970 --> 01:13:53.290
Und es ist immer... Aber was ich dann... Ich dachte eigentlich,

01:13:53.610 --> 01:13:54.810
wenn man mich damals gefragt hätte,

01:13:55.830 --> 01:13:57.490
ähm, was glaubst

01:13:57.490 --> 01:13:59.230
du, wann können Suchmaschinen...

01:13:59.230 --> 01:14:01.650
Ist das so ein Standard-Feature von Volltext-Suchmaschinen?

01:14:01.710 --> 01:14:03.110
Hätte ich gedacht, ja, so in 2 Jahren oder so,

01:14:03.150 --> 01:14:03.730
können die das alle.

01:14:04.910 --> 01:14:06.070
Die machen das aber immer noch nicht.

01:14:06.370 --> 01:14:07.130
Also das ist jetzt...

01:14:07.130 --> 01:14:09.070
Also das ist so ein bisschen

01:14:09.070 --> 01:14:11.230
naja, aber

01:14:11.230 --> 01:14:13.430
wahrscheinlich braucht man ja

01:14:13.430 --> 01:14:14.890
da doch irgendwie auch einen Markt dafür.

01:14:18.970 --> 01:14:19.590
Und wenn es

01:14:19.590 --> 01:14:21.470
einfach keinen interessiert, dann passiert

01:14:21.470 --> 01:14:23.410
das halt auch nicht. Und wenn es keinen Grund gibt, das zu implementieren

01:14:23.410 --> 01:14:25.470
und den gibt es halt nur bei den großen Suchmaschinen

01:14:25.470 --> 01:14:27.330
und die machen das wahrscheinlich, aber die

01:14:27.330 --> 01:14:28.390
geben ihren Kram halt nicht raus.

01:14:30.430 --> 01:14:30.790
Ach ja.

01:14:31.770 --> 01:14:33.410
Aber im Grunde, so könnte man

01:14:33.410 --> 01:14:35.150
halt, man kann halt,

01:14:35.490 --> 01:14:36.950
also wenn man jetzt zum Beispiel

01:14:36.950 --> 01:14:58.890
Also daher weiß ich das auch noch, ich war im TF-EDF-Vergleich mit einem einfachen Machine Learning Modell, wo man halt ein paar Signale nimmt und die kombiniert und das halt dann optimiert hat. Das ist halt schon wirklich deutlich besser. Und das heißt, man kann ja relativ viel rausholen, was die Qualität von Suchergebnissen angeht. Und das wäre eigentlich alles gar nicht so schlimm.

01:14:59.330 --> 01:15:04.970
Ja, also falls ihr eine neue Suchmaschine braucht, dann sagt ihr einfach mal Bescheid.

01:15:06.210 --> 01:15:07.650
Ja, ist ja dummerweise auch irgendwie

01:15:07.650 --> 01:15:09.810
nicht so ganz so super leicht zu implementieren.

01:15:10.050 --> 01:15:11.590
Das kann man auch nicht so am Wochenende machen.

01:15:12.790 --> 01:15:13.690
Naja, aber

01:15:13.690 --> 01:15:15.410
also ich glaube, wenn man jetzt

01:15:15.410 --> 01:15:17.630
beispielsweise

01:15:17.630 --> 01:15:19.430
Postgres nimmt oder so und

01:15:19.430 --> 01:15:21.490
halt irgendwie

01:15:21.490 --> 01:15:23.610
Django und dann

01:15:23.610 --> 01:15:25.730
Volltextsuche drauf macht und dann

01:15:25.730 --> 01:15:27.790
halt kann man natürlich auch die eingebaute Rank-Funktion

01:15:27.790 --> 01:15:29.750
nehmen, die halt auch was TF-EDF-mäßiges

01:15:29.750 --> 01:15:30.830
macht. Und Redis dazu.

01:15:32.150 --> 01:15:32.950
Ja, Redis

01:15:32.950 --> 01:15:35.530
oder man kann auch mal Redis ausprobieren.

01:15:35.530 --> 01:15:36.710
Muss ich mal testen.

01:15:38.790 --> 01:15:40.090
Dann ist man da schon,

01:15:40.650 --> 01:15:42.730
wenn man das nochmal selber sortiert,

01:15:43.010 --> 01:15:44.710
schon relativ weit vorne, wenn man das dann richtig macht.

01:15:46.110 --> 01:15:46.470
Genau.

01:15:47.910 --> 01:15:48.570
Du hast eine Sache,

01:15:48.830 --> 01:15:50.070
eben war es nur mit dem Pau,

01:15:50.370 --> 01:15:52.370
irgendwas gesagt, da wolltest du doch kurz drauf eingehen.

01:15:52.450 --> 01:15:53.630
Ich weiß jetzt nicht, ob das noch wichtig ist,

01:15:53.710 --> 01:15:55.050
ob das jeder schon vergessen hat.

01:15:57.350 --> 01:15:58.090
Irgendeine Methode

01:15:58.090 --> 01:15:59.750
zum Ranken.

01:16:03.510 --> 01:16:04.070
Weiß ich schon.

01:16:04.070 --> 01:16:05.290
Das Exponentiale.

01:16:07.590 --> 01:16:08.910
Du meinst die Potenzmenge?

01:16:09.170 --> 01:16:10.270
Du meinst...

01:16:10.270 --> 01:16:10.530
Ja.

01:16:12.530 --> 01:16:13.610
Ich glaube, das hat...

01:16:13.610 --> 01:16:16.050
Ja, also kommt drauf an.

01:16:16.170 --> 01:16:17.430
Es ist halt unterschiedlich für jede

01:16:17.430 --> 01:16:21.390
Seite oder für jede Suchmaschine.

01:16:21.830 --> 01:16:23.470
Hängt halt ab, welche Anfragen stellen.

01:16:23.570 --> 01:16:25.870
Aber was man oft sieht, ist halt, dass eine kleine Anzahl von Anfragen,

01:16:26.530 --> 01:16:27.410
kleine Menge von Anfragen,

01:16:27.490 --> 01:16:29.070
Großteil...

01:16:29.070 --> 01:16:31.490
Eine kleine Anzahl unterschiedlicher Anfragen macht einen Großteil...

01:16:31.490 --> 01:16:34.010
Entschuldigung, das hattest du doch tatsächlich schon einigermaßen erwähnt.

01:16:34.070 --> 01:16:37.090
Genau, genau, das Problem hat man auch.

01:16:37.610 --> 01:16:38.770
Ja, ansonsten, ich weiß nicht,

01:16:39.270 --> 01:16:41.430
oder genau, wir hatten ja so SEO schon so ein bisschen,

01:16:41.890 --> 01:16:43.750
aber da würde ich auch noch gerne,

01:16:44.050 --> 01:16:44.930
also was man halt da,

01:16:46.030 --> 01:16:46.670
du sagst Content,

01:16:46.670 --> 01:16:51.510
das was sich Leute oft nicht klar machen,

01:16:51.690 --> 01:16:54.770
ist halt, was das heißt.

01:16:55.210 --> 01:16:55.910
Würdest du sagen,

01:16:56.050 --> 01:16:57.170
es geht darum,

01:16:58.010 --> 01:17:00.830
den optimalen Text zu schreiben für irgendeine,

01:17:01.950 --> 01:17:06.130
Oder wie würdest du sagen, was ist das, was Content gut macht?

01:17:06.570 --> 01:17:10.350
Also ich würde sagen, Content macht gut, dass man, zumindest wenn man Google fragt,

01:17:10.490 --> 01:17:12.950
dass man Absätze hat, die tatsächlich mit Inhalten gefüllt sind,

01:17:12.950 --> 01:17:18.210
die halt eine Wortdiversität beinhalten, die zu dem Thema einigermaßen passt.

01:17:18.930 --> 01:17:22.470
Dass die Worte da irgendwie schon einen Kontextbezug zu haben,

01:17:22.530 --> 01:17:24.750
dass sie vielleicht auch bestimmte Dinge beschreiben,

01:17:24.810 --> 01:17:26.210
dass man halt nicht immer irgendwelche Keywords benutzt,

01:17:26.330 --> 01:17:28.530
sondern dass man halt tatsächlich versucht, einen Text darzustellen.

01:17:28.930 --> 01:17:30.850
Und Google hat es irgendwie geschafft, so ein Maß dafür zu finden,

01:17:30.970 --> 01:17:34.510
ob so ein Text tatsächlich gut ist, ja, in dem Sinne oder nicht.

01:17:34.990 --> 01:17:37.050
Und wenn man da halt, ich weiß nicht,

01:17:37.110 --> 01:17:39.430
mehrere Seiten vielleicht zu hat zu seinem Post,

01:17:39.530 --> 01:17:42.030
dann wird das als guter Content irgendwie bewertet.

01:17:42.130 --> 01:17:43.570
Ich kenne tatsächlich jetzt auch nicht im Detail

01:17:43.570 --> 01:17:45.250
so die Bewertung für was ist jetzt guter Content.

01:17:45.450 --> 01:17:46.850
Und das bewegt sich vielleicht noch ein bisschen.

01:17:46.850 --> 01:17:49.070
Und ob man das jetzt alles schön mit Bildern machen muss,

01:17:49.130 --> 01:17:49.890
mit Alltexten und so,

01:17:50.670 --> 01:17:54.770
dass man halt dann das qualitativ hochwertig implementiert hat.

01:17:54.870 --> 01:17:56.650
Also die Implementierung ist, glaube ich, auch nicht ganz unwichtig.

01:17:57.230 --> 01:17:59.570
Wenn man das aber, glaube ich, wenigstens so tut,

01:17:59.630 --> 01:18:01.330
als hätte man das qualitativ hochwertig implementiert,

01:18:01.410 --> 01:18:03.210
indem man einigermaßen taktisch sinnvolle Sätze

01:18:03.210 --> 01:18:04.550
zu einem Thema hinschreibt,

01:18:04.630 --> 01:18:05.650
die dann auch so aussehen,

01:18:05.710 --> 01:18:06.450
als gehören die zum Thema,

01:18:06.610 --> 01:18:09.190
weil die halt da mit dem TF-RDF-Werte

01:18:09.190 --> 01:18:10.490
irgendwie dann zu dem Thema gut passen,

01:18:10.570 --> 01:18:11.650
irgendwie gibt es dann irgendwie einen Index,

01:18:12.230 --> 01:18:13.230
dann glaube ich,

01:18:13.270 --> 01:18:15.230
ist das schon einigermaßen ansprechender Content,

01:18:15.330 --> 01:18:15.970
zumindest für Google.

01:18:16.410 --> 01:18:17.610
Und wenn man das dann halt schafft,

01:18:17.610 --> 01:18:19.610
da so eine Content-Pyramide,

01:18:20.290 --> 01:18:21.410
wie man das schon sagt, aufzubauen,

01:18:21.490 --> 01:18:22.370
das heißt, zu einem Oberthema

01:18:22.370 --> 01:18:23.810
viele verschiedene Bereiche,

01:18:23.870 --> 01:18:25.130
die eigentlich diesem Oberthema gehören,

01:18:25.350 --> 01:18:26.610
also vielleicht machen wir das ja

01:18:26.610 --> 01:18:27.530
mit unserem Podcast zum Beispiel,

01:18:27.730 --> 01:18:29.850
dass wir halt tatsächlich verschiedene Themen

01:18:29.850 --> 01:18:31.610
zu Python haben, das aber alles Python ist und das hat

01:18:31.610 --> 01:18:33.590
irgendwie alles einen Bezug zu Python, dann

01:18:33.590 --> 01:18:36.250
kommen wir tatsächlich in dieser Content-Pyramide

01:18:36.250 --> 01:18:37.810
Python immer wieder ein Stück

01:18:37.810 --> 01:18:39.850
weiter oben, nach oben. Natürlich haben wir jetzt keine Texte,

01:18:39.890 --> 01:18:41.570
die man so analysieren kann per Volltext-Suche

01:18:41.570 --> 01:18:43.750
und nach denen man ranken kann. Wir haben halt nur irgendwelche

01:18:43.750 --> 01:18:45.470
Snippets oder Shownotes, mit denen man das tun kann.

01:18:45.970 --> 01:18:47.550
Aber ich glaube so,

01:18:48.210 --> 01:18:49.810
also das funktioniert so ein bisschen, was halt

01:18:49.810 --> 01:18:50.590
Content bedeutet.

01:18:52.030 --> 01:18:53.630
Ja, aber das ist jetzt auch, würde ich

01:18:53.630 --> 01:18:55.810
eher sagen, auf einer sehr technischen

01:18:55.810 --> 01:18:57.630
Ebene.

01:18:57.730 --> 01:19:24.090
Ja, und man kann glaube ich aber auch, also ich würde sagen, okay, also der technische Teil ist, macht auch einen nicht unerheblichen Teil aus, also man kann halt auch furchtbare Fehler machen, aber ein großer anderer Teil ist halt auch ein inhaltlicher und der ist halt eben zum Beispiel, also was dann eben, ich bin überrascht, man kann zum Beispiel auch unterschiedliche Seiten haben für unterschiedliche Anfragen und für unterschiedliche User.

01:19:24.090 --> 01:19:46.030
Man muss halt erstmal überhaupt rauskriegen, was sind das für Leute, die auf meine Seite kommen und möglicherweise gibt es da unterschiedliche Leute, möglicherweise stellen die unterschiedliche Suchanfragen und dann kann es zum Beispiel gut sein, das ist auch etwas, das kennen bestimmt viele Leute, wenn man sucht nach irgendwas, dann landet man auf einer Seite von irgendeiner Firma, die irgendwas anbietet oder so und scrollt da die ganze Zeit rum und denkt sich so, was wollen die mir eigentlich erzählen?

01:19:46.030 --> 01:19:48.830
Wir haben fünf Stockfotos

01:19:48.830 --> 01:19:50.050
und dann irgendwie die gleichen

01:19:50.050 --> 01:19:52.930
Passwort-Bingo-Dinger, die auf allen Seiten

01:19:52.930 --> 01:19:54.750
sind und ich scrolle da

01:19:54.750 --> 01:19:57.130
eine Viertelstunde drauf rum und ich verstehe

01:19:57.130 --> 01:19:58.770
nicht, was das eigentlich ist.

01:19:59.630 --> 01:20:00.830
Das hat man

01:20:00.830 --> 01:20:01.350
oft.

01:20:02.570 --> 01:20:04.710
Aber die Frage ist, warum müssen die eigentlich

01:20:04.710 --> 01:20:06.770
allen die gleiche Landingpage zeigen? Das müssen die doch

01:20:06.770 --> 01:20:08.770
gar nicht. Aber das kommt dabei raus,

01:20:08.830 --> 01:20:10.890
wenn du sagst, okay, ich mache eine Landingpage

01:20:10.890 --> 01:20:12.310
für alle die gleiche,

01:20:12.910 --> 01:20:14.510
dann kriegst du halt sowas.

01:20:14.750 --> 01:20:16.510
aber das müsste eigentlich gar nicht sein,

01:20:16.610 --> 01:20:18.430
sondern das, was sie sich überlegen müssten, ist halt,

01:20:18.870 --> 01:20:20.690
okay, wenn jetzt jemand nach bestimmten technischen

01:20:20.690 --> 01:20:22.890
Geschichten

01:20:22.890 --> 01:20:24.530
sucht, dann

01:20:24.530 --> 01:20:26.530
geben wir dem doch

01:20:26.530 --> 01:20:27.810
vielleicht eine Seite,

01:20:28.010 --> 01:20:32.650
wo tatsächlich

01:20:32.650 --> 01:20:34.070
steht, was wir machen und wenn jetzt

01:20:34.070 --> 01:20:36.530
irgendwie, keine Ahnung, eher ein businessorientierter

01:20:36.530 --> 01:20:40.330
User halt nach den üblichen

01:20:40.330 --> 01:20:42.230
Buzzwords sucht oder so, den gut, den kannst du ja dann

01:20:42.230 --> 01:20:43.930
vielleicht irgendwie, vielleicht kriegst du den irgendwie

01:20:43.930 --> 01:20:45.690
mit Stockfotos glücklich gemacht.

01:20:45.790 --> 01:20:48.210
Das führt überhaupt dazu, dass wir

01:20:48.210 --> 01:20:50.130
diese Datenkrake brauchen, wenn wir damit

01:20:50.130 --> 01:20:52.110
Geld verdienen wollen. Das ist der Grund dafür, warum

01:20:52.110 --> 01:20:54.190
man so sehr interessiert ist an dem Typen von

01:20:54.190 --> 01:20:55.850
Nutzer, den man jetzt da vor der Kiste hat, weil

01:20:55.850 --> 01:20:57.930
es geht ja eigentlich darum, dass man den irgendwie

01:20:57.930 --> 01:21:00.090
emotionalisiert und nicht nur, dass man dem den

01:21:00.090 --> 01:21:02.130
tollen Content zeigt, sondern dass man den dann,

01:21:02.270 --> 01:21:04.250
also wenn wir jetzt von der ganzen Geldmaschine ausgehen,

01:21:04.330 --> 01:21:05.870
den dazu bringt, dass der irgendwas kaufen soll.

01:21:06.390 --> 01:21:08.030
Wenn der schöne Kapitalismus halt so ist, der möchte

01:21:08.030 --> 01:21:10.370
dich emotionalisieren und dir das zeigen, was du willst.

01:21:10.670 --> 01:21:12.130
Ja, weiß ich gar nicht.

01:21:12.830 --> 01:21:15.270
Aber ich meine jetzt nur rein aus dem Suchmaschinen-Kontext.

01:21:16.470 --> 01:21:18.470
Was man jetzt damit macht, ist ja nochmal eine andere Frage.

01:21:18.610 --> 01:21:21.050
Klar, will ich eventuell Leute hinterher,

01:21:21.610 --> 01:21:24.270
die konvertieren zu was auch immer, Umsatz.

01:21:25.210 --> 01:21:27.390
Die konvertieren zu, das ist total schön,

01:21:27.490 --> 01:21:29.090
wenn man von Leuten redet, wir möchten die gerne konvertieren.

01:21:29.290 --> 01:21:31.150
Wir möchten unsere Hörer übrigens konvertieren

01:21:31.150 --> 01:21:32.790
zu besseren Pythonister.

01:21:34.370 --> 01:21:35.410
Genau, man muss sich halt überlegen,

01:21:35.450 --> 01:21:37.370
was man für Ziele eigentlich erreichen will.

01:21:37.910 --> 01:21:39.790
Aber damit das überhaupt funktionieren kann,

01:21:39.790 --> 01:21:40.890
damit ich überhaupt die Chance kriege,

01:21:41.450 --> 01:21:42.790
muss ich ja irgendwie

01:21:42.790 --> 01:21:45.010
vielleicht, oder macht es vielleicht Sinn, den Leuten

01:21:45.010 --> 01:21:47.050
halt etwas zu zeigen, was sie dann halt

01:21:47.050 --> 01:21:49.110
auch verwenden können, was sie verstehen können, was relevant

01:21:49.110 --> 01:21:50.750
für sie ist. Und das passiert oft nicht.

01:21:51.190 --> 01:21:53.210
Sondern ganz oft ist es

01:21:53.210 --> 01:21:54.930
halt so, alle kriegen das Gleiche, egal

01:21:54.930 --> 01:21:56.290
wonach sie gesucht haben. Dabei

01:21:56.290 --> 01:21:59.050
das weiß ich doch, wonach sie gesucht haben. Ich muss

01:21:59.050 --> 01:22:01.170
ja jetzt nicht irgendwie wissen, wer das ist. Das interessiert

01:22:01.170 --> 01:22:03.130
mich gar nicht. Ich weiß doch, wonach die gesucht

01:22:03.130 --> 01:22:05.110
haben. Warum zeige ich denen alle das Gleiche?

01:22:05.210 --> 01:22:06.810
Das macht überhaupt keinen Sinn. Aber

01:22:06.810 --> 01:22:09.130
es gibt die Vorstellung, dass das halt so sein muss,

01:22:09.350 --> 01:22:10.230
woher auch immer die kommt.

01:22:10.970 --> 01:22:14.590
Und dass es halt dann so ein technisches Ding ist,

01:22:15.330 --> 01:22:17.830
welche Farbe nehme ich da oder welche Fotos,

01:22:17.910 --> 01:22:19.210
wie ist der Anteil von Fotos zu Text,

01:22:19.550 --> 01:22:20.670
dass das dann irgendwie gut macht.

01:22:20.770 --> 01:22:23.490
Aber wenn da nicht steht, was mich interessiert,

01:22:23.590 --> 01:22:25.970
dann kriege ich das nicht wieder gut gemacht durch irgendeine Farbe.

01:22:26.130 --> 01:22:29.170
Das ist einfach, da hast du mich schon verloren im Grunde.

01:22:29.230 --> 01:22:30.510
Also das, was du gerade gesagt hast,

01:22:30.550 --> 01:22:32.890
ist, dass der Content King eigentlich bedeuten sollte,

01:22:32.950 --> 01:22:34.210
ich kriege genau das, was ich möchte,

01:22:34.210 --> 01:22:37.070
weil es so prä-invalidisiert und gefiltert ist,

01:22:37.130 --> 01:22:38.890
dass deine eigene Blase so gut zu dir passt,

01:22:38.950 --> 01:22:40.670
dass du da genau das findest, was du machst.

01:22:40.970 --> 01:22:42.950
Nein, es müsste sich jemand Gedanken drüber gemacht haben.

01:22:43.230 --> 01:22:44.370
Das ist halt das Entscheidende.

01:22:44.450 --> 01:22:46.050
Jemand muss sich zum Beispiel angeguckt haben.

01:22:46.070 --> 01:22:48.250
Also bessere Kuratierung durch den Suchalgorithmus.

01:22:49.090 --> 01:22:49.230
Nee.

01:22:50.590 --> 01:22:52.130
Jemand sollte sich überlegt haben,

01:22:52.590 --> 01:22:54.990
zum Beispiel, wir sind das Dokument nicht,

01:22:55.070 --> 01:22:55.690
wir sind die Suchmaschine.

01:22:56.470 --> 01:22:58.050
Was Google macht, ist nochmal ein anderes Ding, aber

01:22:58.050 --> 01:23:01.070
es müsste sich jemand überlegt haben,

01:23:01.210 --> 01:23:02.290
okay, wonach suchen die Leute?

01:23:03.230 --> 01:23:04.990
Wenn die Leute auf der Seite landen, wonach haben die gesucht?

01:23:05.070 --> 01:23:06.170
Ist das wirklich das, was sie suchen?

01:23:07.270 --> 01:23:08.790
Wenn sie danach gesucht haben,

01:23:08.790 --> 01:23:10.810
kriegen die Seite, wäre es nicht sinnvoll,

01:23:10.850 --> 01:23:11.870
eine andere Seite zu zeigen.

01:23:13.170 --> 01:23:13.970
Ja, solche Sachen.

01:23:15.150 --> 01:23:16.390
Das ist überhaupt so etwas,

01:23:16.770 --> 01:23:18.970
was ich glaube, was tatsächlich sehr sinnvoll wäre

01:23:18.970 --> 01:23:21.010
unter Umständen, dass halt Unternehmen

01:23:21.010 --> 01:23:23.070
halt für unterschiedliche Zielgruppen, unterschiedliche Leute,

01:23:23.690 --> 01:23:24.990
unterschiedliche Suchanfragen, unterschiedliche

01:23:24.990 --> 01:23:26.870
Seiten haben. Das gibt es praktisch nicht, weil

01:23:26.870 --> 01:23:27.990
irgendwie die Vorstellung ist,

01:23:28.950 --> 01:23:30.890
das ist wie in einer physikalischen Welt.

01:23:30.990 --> 01:23:33.110
Du hast halt ein Schaufenster und das ist halt für alle gleich.

01:23:33.230 --> 01:23:34.970
Aber das muss man ja gar nicht so machen

01:23:34.970 --> 01:23:36.970
unter Umständen. Aber das ist halt

01:23:36.970 --> 01:23:38.670
sehr schwer zu vermitteln. Aber wenn du jetzt zum

01:23:38.670 --> 01:23:40.890
SEO gehst, der so die Content-Strategie

01:23:40.890 --> 01:23:42.590
macht oder so, dann sagt er dir vielleicht einfach,

01:23:42.830 --> 01:23:44.170
boah, kann das auch anders machen.

01:23:44.930 --> 01:23:46.430
Aber wenn du jetzt zu einer

01:23:46.430 --> 01:23:48.770
technischen SEO-Agentur gehst, die dir sagt,

01:23:48.890 --> 01:23:50.570
okay, ich verkaufe dir so und so viele Backlinks, dann

01:23:50.570 --> 01:23:52.850
hilft dir das. Also

01:23:52.850 --> 01:23:54.670
sagen wir mal so, es gibt halt nicht nur den technischen Teil,

01:23:54.730 --> 01:23:56.770
sondern halt auch den inhaltlichen Teil

01:23:56.770 --> 01:23:58.670
und der wird halt, der inhaltliche Teil

01:23:58.670 --> 01:24:00.250
wird, soweit ich hinweist,

01:24:00.590 --> 01:24:01.850
üblicherweise mitbekomme, immer sehr

01:24:01.850 --> 01:24:04.610
vernachlässigt. Und die Leute kümmern sich immer

01:24:04.610 --> 01:24:06.610
um technische Details und dann oft auch um Sachen,

01:24:06.730 --> 01:24:08.750
die eigentlich eher fragwürdig sind

01:24:08.750 --> 01:24:09.190
und

01:24:09.190 --> 01:24:12.510
lassen dann eine ganze Menge gute Gelegenheiten

01:24:12.510 --> 01:24:13.150
einfach so liegen.

01:24:14.810 --> 01:24:16.470
Es klingt halt, als wäre es aufwendig,

01:24:16.550 --> 01:24:18.550
das zu implementieren. Ja, ist es tatsächlich.

01:24:18.790 --> 01:24:20.630
Das ist vielleicht auch der Grund,

01:24:20.730 --> 01:24:22.570
warum das keiner macht. Ja, genau. Und was die Leute,

01:24:22.670 --> 01:24:24.630
die das halt implementieren, die Content

01:24:24.630 --> 01:24:26.490
machen, vielleicht auch dann nicht auf dieser technischen Seite sind,

01:24:26.570 --> 01:24:28.930
beziehungsweise das dann, ich sage einfach mal,

01:24:28.930 --> 01:24:30.870
relativ teuer wird und mal das zu implementieren

01:24:30.870 --> 01:24:32.990
nicht so einfach ist

01:24:32.990 --> 01:24:34.850
für die Zielgruppe, die dann gerne ihren kleinen

01:24:34.850 --> 01:24:37.730
Straßenlädchen

01:24:37.730 --> 01:24:40.390
optimieren möchte, das vielleicht auch so cool ist.

01:24:40.390 --> 01:24:42.390
Ja, aber die großen Kunden, hast du das schon mal

01:24:42.390 --> 01:24:44.490
gesehen, also dass so wirklich diese Pages wirklich dann

01:24:44.490 --> 01:24:46.670
sich ändern, je nach Suchanfrage?

01:24:47.490 --> 01:24:47.690
Ja.

01:24:48.510 --> 01:24:50.410
Wo? Nein, du packst einfach, das ist

01:24:50.410 --> 01:24:52.290
überhaupt nicht schwer. Nein, ich sage nur, hast du

01:24:52.290 --> 01:24:54.270
ein Beispiel, wo du sagst, die Gnässe

01:24:54.270 --> 01:24:56.350
machen? Nicht, nicht, nicht, es ändert sich nach Suchanfrage, sondern du hast halt

01:24:56.350 --> 01:24:58.330
unterschiedliche Pages im

01:24:58.330 --> 01:25:00.390
Google-Index und bei unterschiedlichen Anfragen

01:25:00.390 --> 01:25:02.570
werden unterschiedliche Seiten gefunden. Ja, okay, okay.

01:25:02.730 --> 01:25:04.350
Das kannst du machen, das ist

01:25:04.350 --> 01:25:06.210
gar kein Problem. Ja, das habe ich, ja, okay, das ist natürlich,

01:25:06.470 --> 01:25:06.690
ja.

01:25:08.210 --> 01:25:08.570
Ja.

01:25:10.350 --> 01:25:12.250
Also man hittet quasi für jedes

01:25:12.250 --> 01:25:14.270
schöne Keyword-Kombination seine eigene Landepage

01:25:14.270 --> 01:25:16.270
raus. Ja, oder, du musst nicht

01:25:16.270 --> 01:25:17.970
für jede kombinieren, aber du musst halt gucken, also

01:25:17.970 --> 01:25:20.170
man würde damit anfangen zu gucken, was suchen die

01:25:20.170 --> 01:25:22.090
Leute eigentlich, mit welchen

01:25:22.090 --> 01:25:23.830
Anfragen landen sie oder auch,

01:25:23.930 --> 01:25:26.150
wenn ich jetzt mich dafür interessiere, was würde

01:25:26.150 --> 01:25:28.250
ich denn suchen und wie schaffe ich es dann,

01:25:28.370 --> 01:25:29.890
dass ich dann auch dann da gerankt werde.

01:25:30.530 --> 01:25:31.950
Und dieser Schritt ist ja

01:25:31.950 --> 01:25:33.910
das Allersimpelste, dass man halt

01:25:33.910 --> 01:25:35.610
anfängt, sich zu überlegen, okay, wie kommen

01:25:35.610 --> 01:25:37.390
Leute eigentlich hin? Das machen die meistens schon nicht.

01:25:37.970 --> 01:25:39.590
Sondern die gehen halt umgekehrt

01:25:39.590 --> 01:25:41.290
von der Seite aus, die sie halt bauen

01:25:41.290 --> 01:25:43.590
und sagen dann, okay, ich habe jetzt

01:25:43.590 --> 01:25:45.310
diese Seite, völlig

01:25:45.310 --> 01:25:47.550
unabhängig davon, ob das irgendjemand interessiert

01:25:47.550 --> 01:25:49.590
oder nicht, wie kriege ich die denn jetzt hochgerankt?

01:25:50.330 --> 01:25:51.630
Und dann packen sie da irgendwie

01:25:51.630 --> 01:25:53.630
komische Warte rein oder kaufen Links

01:25:53.630 --> 01:25:55.050
oder machen irgendwie seltsame Dinge,

01:25:55.610 --> 01:25:57.550
ändern die Farben, verstecken

01:25:57.550 --> 01:25:59.050
weißen Text auf weißem Hintergrund.

01:25:59.090 --> 01:26:00.510
Ja, oder kaufen Hellhits bei Google.

01:26:00.710 --> 01:26:03.550
Und wundern sich dann, dass die Leute irgendwie, wenn sie halt

01:26:03.550 --> 01:26:05.510
quasi da landen, dann irgendwie enttäuscht

01:26:05.510 --> 01:26:05.890
sind.

01:26:07.910 --> 01:26:09.570
Ja, aber diese ganzen Tricks, also mit den

01:26:09.570 --> 01:26:11.430
Sachen verstecken, hinter weißem Hintergrund und mit den

01:26:11.430 --> 01:26:13.470
extra Keywords und mit den zu vielen Links, das hat, glaube ich,

01:26:13.470 --> 01:26:15.330
Google mit den ganzen neuen Pässen alle rausgenommen.

01:26:15.350 --> 01:26:17.210
Ja, die sind da sehr gut. Also das wird alles nicht so richtig

01:26:17.210 --> 01:26:19.350
funktionieren. Ja, es wird sogar bestraft. Also du wirst tatsächlich

01:26:19.350 --> 01:26:21.390
abgerankt, wenn du sowas machst noch. Also wenn die

01:26:21.390 --> 01:26:23.470
solche Methoden finden, die können die identifizieren, dann schmeißen

01:26:23.470 --> 01:26:24.450
die viel raus. Das wird bestraft.

01:26:25.930 --> 01:26:26.970
Würde ich jetzt, finde ich,

01:26:27.730 --> 01:26:29.410
wüsste ich jetzt nicht genau,

01:26:29.410 --> 01:26:31.130
warum man das machen sollte, weil im Grunde ist es ja,

01:26:31.210 --> 01:26:32.910
wenn ich Google wäre, würde ich das ignorieren.

01:26:33.230 --> 01:26:35.250
Nö, also ich habe gehört, dass das tatsächlich drinsteht.

01:26:35.330 --> 01:26:36.730
Ich weiß nicht, was das ist. Google Dolphin oder was?

01:26:36.730 --> 01:26:38.810
Wie ist das denn für Google? Ja, das ist halt nur noch

01:26:38.810 --> 01:26:41.270
Sachen gerankt, wenn die halt diesen Content-Qualitätsding

01:26:41.270 --> 01:26:43.030
besser machen können. Das heißt, weil die halt

01:26:43.030 --> 01:26:45.030
auf diese Qualitätssachen denken. Und Leute, die halt

01:26:45.030 --> 01:26:46.890
dann versuchen, mit Keywords das

01:26:46.890 --> 01:26:49.150
einzubinden, die legen nicht so viel Wert

01:26:49.150 --> 01:26:50.810
auf guten, qualitativ hochwertigen Content.

01:26:51.590 --> 01:26:53.190
Ja, aber dann würdest

01:26:53.190 --> 01:26:54.790
du sagen, du kannst eine Regel aufstellen,

01:26:55.010 --> 01:26:56.830
die funktioniert. Du sagst, Leute, die

01:26:56.830 --> 01:26:58.930
irgendwie so shady Geschichten machen oder die halt

01:26:58.930 --> 01:27:00.890
die falsche, sich halt

01:27:00.890 --> 01:27:02.730
von der falschen SEO-Agentur

01:27:02.730 --> 01:27:04.250
übers Ohr haben hauen lassen,

01:27:04.770 --> 01:27:06.690
die sind halt prinzipiell

01:27:06.690 --> 01:27:07.790
nicht gut. Genau.

01:27:08.750 --> 01:27:10.490
Da weiß ich nicht, ob diese Regel wirklich stimmt. Ich würde

01:27:10.490 --> 01:27:12.450
tatsächlich das eher

01:27:12.450 --> 01:27:14.210
dann aus Trainingsdaten lernen lassen,

01:27:14.530 --> 01:27:15.810
ob das so ist oder nicht, weil

01:27:15.810 --> 01:27:18.570
diese Annahme muss ja nicht richtig sein. Es kann ja sein,

01:27:18.670 --> 01:27:20.530
tatsächlich, dass irgendwie der Hotdog-Stand

01:27:20.530 --> 01:27:22.190
um die Ecke, der eigentlich total super Hotdogs macht,

01:27:22.650 --> 01:27:24.290
hat aber jetzt nicht so die perfekte

01:27:24.290 --> 01:27:26.670
SEO-Auswahlkompetenz und

01:27:26.670 --> 01:27:28.050
greift da halt ins Klo.

01:27:28.710 --> 01:27:30.350
Da würde ich den gar nicht dafür bestrafen wollen,

01:27:30.350 --> 01:27:32.530
unbedingt dafür, dass halt seine SEO-Agentur

01:27:32.530 --> 01:27:34.590
kacke ist, sondern ich würde das ignorieren.

01:27:35.090 --> 01:27:36.070
Aber ich weiß es nicht.

01:27:36.850 --> 01:27:38.270
Aber ich glaube, also Google hat das tatsächlich gemacht,

01:27:38.350 --> 01:27:40.090
das steht irgendwie in den Rules da drin, aber

01:27:40.090 --> 01:27:42.710
ja, sollte man

01:27:42.710 --> 01:27:43.530
vielleicht nochmal drüber nachdenken.

01:27:44.330 --> 01:27:46.050
Ja gut, aber

01:27:46.050 --> 01:27:48.050
ich hoffe jetzt, also so Ressourcungsbewertung

01:27:48.050 --> 01:27:50.570
aber das haben wir glaube ich heute nicht mehr

01:27:50.570 --> 01:27:52.050
die Zeit für und das ist auch nicht unser Thema.

01:27:52.930 --> 01:27:54.470
Warum, wieso, weshalb, dann welche Sternchen

01:27:54.470 --> 01:27:56.670
vergeben werden sollen, sollten, sollten, nicht sollten

01:27:56.670 --> 01:27:58.530
oder? Ja, aber

01:27:58.530 --> 01:28:00.030
genau, zum Beispiel

01:28:00.030 --> 01:28:04.350
haben wir noch irgendwie ein großes

01:28:04.350 --> 01:28:06.350
Thema oder sowas da drin ist, was

01:28:06.350 --> 01:28:08.350
wir noch gar nicht angeschnitten haben

01:28:08.350 --> 01:28:09.270
oder was irgendwie

01:28:09.270 --> 01:28:12.350
Ich glaube die großen Sachen

01:28:12.350 --> 01:28:14.430
haben wir einigermaßen durch. Wir haben so ein bisschen erklärt, wie es funktioniert

01:28:14.430 --> 01:28:16.330
was für Algorithmen dahinter stecken. Wir sind jetzt nicht

01:28:16.330 --> 01:28:18.190
ganz so detailliert eingegangen auf diese ganze

01:28:18.190 --> 01:28:20.390
mathematische Komponente

01:28:20.390 --> 01:28:22.330
von den Wertberechnungen, aber das ist vielleicht

01:28:22.330 --> 01:28:24.430
auch einfach hier an der Stelle too much

01:28:24.430 --> 01:28:26.150
Wir haben vielleicht noch wieder mal

01:28:26.150 --> 01:28:28.270
leider ein bisschen weniger Zeit, wie man das

01:28:28.270 --> 01:28:30.250
Python macht, also aus dem, was wir gesagt haben, dass es irgendwie so

01:28:30.250 --> 01:28:31.770
Pylusin und Woosh gibt, habe ich jetzt

01:28:31.770 --> 01:28:34.110
natürlich Postgres und damit das man

01:28:34.110 --> 01:28:35.030
in Django implementieren kann.

01:28:36.050 --> 01:28:38.050
Genau, vielleicht wenn man, also

01:28:38.050 --> 01:28:40.150
ich finde auch gerade Python ist super

01:28:40.150 --> 01:28:42.090
geeignet dafür, weil dann kann man diese beiden Dinge

01:28:42.090 --> 01:28:44.250
halt total gut miteinander kombinieren. Man kann halt zum Beispiel

01:28:44.250 --> 01:28:46.210
irgendwie diese

01:28:46.210 --> 01:28:46.790
ganzen

01:28:46.790 --> 01:28:49.410
Ranking-Geschichten

01:28:49.410 --> 01:28:52.070
halt wahrscheinlich, also ich denke mal,

01:28:52.330 --> 01:28:54.210
es müsste eigentlich, so Python ist wahrscheinlich die Sprache,

01:28:54.330 --> 01:28:55.270
mit der das am besten geht.

01:28:56.090 --> 01:28:58.270
wenn man halt eben diese ganze NumPy,

01:28:58.430 --> 01:29:00.430
SciPy, Machine Learning

01:29:00.430 --> 01:29:02.010
Geschichte mit dranhängen hat.

01:29:02.970 --> 01:29:04.230
Das heißt, selbst wenn man jetzt nicht unbedingt

01:29:04.230 --> 01:29:06.130
ein Machine Learning Modell verwendet, aber halt diese

01:29:06.130 --> 01:29:08.130
Listen, oder sagen wir mal so

01:29:08.130 --> 01:29:08.830
Vektoren von

01:29:08.830 --> 01:29:12.210
Features halt irgendwie

01:29:12.210 --> 01:29:14.110
auch mit Handgedenken Listen

01:29:14.110 --> 01:29:16.150
schnell zu lenken, das geht mit Python

01:29:16.150 --> 01:29:16.930
wahrscheinlich sehr, sehr gut.

01:29:17.910 --> 01:29:20.130
Und bei anderen Sprachen hätte man da wahrscheinlich so ein bisschen

01:29:20.130 --> 01:29:22.090
Naja, aber

01:29:22.090 --> 01:29:23.950
man hört sich an, das braucht man auf jeden Fall erstmal Content,

01:29:24.090 --> 01:29:25.650
bevor man wirklich eine vernünftige Suche implementiert.

01:29:26.090 --> 01:29:28.850
Ja, tatsächlich, das ist wahrscheinlich auch nicht so

01:29:28.850 --> 01:29:30.950
schlecht. Weil sonst kann man ja selber aussuchen, was dann da rauskommt.

01:29:32.590 --> 01:29:34.910
Ja, und genau, und das ist halt

01:29:34.910 --> 01:29:36.670
ich weiß jetzt gar nicht, ob es ein

01:29:36.670 --> 01:29:37.590
großartiges anderes

01:29:37.590 --> 01:29:40.570
also ist das alles Web

01:29:40.570 --> 01:29:41.950
heutzutage? Ja, ne?

01:29:42.710 --> 01:29:44.530
Gibt es irgendwie noch eine? Da gibt es bestimmt noch irgendwelche

01:29:44.530 --> 01:29:46.670
Studierenden-Datenbanken, wo man dann nach

01:29:46.670 --> 01:29:48.450
wissenschaftlichen Texten suchen kann oder

01:29:48.450 --> 01:29:50.730
Juristen sind sehr gerne dabei mit irgendwelchen

01:29:50.730 --> 01:29:53.170
Volltext-Sachen, irgendwelchen Gesetzestexten

01:29:53.170 --> 01:29:54.770
und Urteilsverkündungsgeschichten.

01:29:55.450 --> 01:29:57.830
Aber das wird auch alles eher mehr oder weniger

01:29:57.830 --> 01:29:58.650
webbasiert laufen.

01:30:00.570 --> 01:30:00.830
Ja.

01:30:01.570 --> 01:30:03.590
Es gibt bestimmt noch mehr, wenn ich noch genug nachdenke.

01:30:04.610 --> 01:30:05.730
Ja, aber es ist glaube ich

01:30:05.730 --> 01:30:07.230
heutzutage eigentlich das meiste

01:30:07.230 --> 01:30:08.990
Web, was man da so macht.

01:30:10.050 --> 01:30:11.870
Ja, oder selbst wenn es irgendwie auf Mobilgeräten

01:30:11.870 --> 01:30:13.950
ist oder so, dann wird man wahrscheinlich eine API-Anfrage

01:30:13.950 --> 01:30:15.810
machen und also letztlich wird es auch wieder Web sein.

01:30:17.370 --> 01:30:17.630
Ja.

01:30:19.210 --> 01:30:19.610
Genau.

01:30:20.070 --> 01:30:21.770
Ja, ich wollte eigentlich auch schon immer mal, das mache ich

01:30:21.770 --> 01:30:23.730
vielleicht mal irgendwie einfach irgendwo ein Repository

01:30:23.730 --> 01:30:25.570
anlegen und dann mal Dinge miteinander

01:30:25.570 --> 01:30:27.350
vergleichen, zum Beispiel einfach

01:30:27.350 --> 01:30:29.550
einen Standard-Korpus von irgendwie oder mehr

01:30:29.550 --> 01:30:31.910
irgendwelchen Dokumenten

01:30:31.910 --> 01:30:33.690
halt in Postgres

01:30:33.690 --> 01:30:35.890
reinhauen, in Redis reinhauen,

01:30:36.010 --> 01:30:37.690
in Elasticsearch reinhauen und mal gucken, was

01:30:37.690 --> 01:30:39.310
sind so die Unterschiede und was macht irgendwie

01:30:39.310 --> 01:30:41.190
großartig Schmerzen und was halt nicht so

01:30:41.190 --> 01:30:43.570
was ist angenehm. Gut, dass du das jetzt

01:30:43.570 --> 01:30:45.670
bei einer Stunde dreißig gesagt hast, wo vielleicht

01:30:45.670 --> 01:30:47.090
einige Hörer schon eingeschlafen sind.

01:30:48.790 --> 01:30:49.850
Aber das Versprechen

01:30:49.850 --> 01:30:50.510
ist aufgeschrieben.

01:30:50.950 --> 01:30:53.290
Ja, vielleicht, genau.

01:30:53.730 --> 01:30:56.290
sag ich nochmal Bescheid, also ich meine,

01:30:56.410 --> 01:30:58.630
es ist auch teilweise nicht so einfach, bei Django ist es so,

01:30:58.690 --> 01:31:00.490
dass es halt, wenn man da einfach nur das macht, was

01:31:00.490 --> 01:31:02.110
in der Dokumentation steht, funktioniert es auch nicht so richtig.

01:31:02.970 --> 01:31:03.850
Das ist schon so ein bisschen

01:31:03.850 --> 01:31:05.870
hakliger, ja.

01:31:07.770 --> 01:31:08.370
Aber das

01:31:08.370 --> 01:31:09.570
muss ich mir nochmal,

01:31:09.850 --> 01:31:11.690
muss ich mir auch nochmal genau angucken.

01:31:11.930 --> 01:31:14.010
Ja, da ist ja Fragen, das verabschiede ich dir gerne mit der E-Mail,

01:31:14.110 --> 01:31:16.370
hallo at pythonpodcast.de. Ich würde sagen,

01:31:16.410 --> 01:31:17.950
wir sind aber jetzt mit der Suche so quasi

01:31:17.950 --> 01:31:20.030
durch und wollten jetzt noch

01:31:20.030 --> 01:31:21.470
ein bisschen Woche machen und so.

01:31:23.410 --> 01:31:25.230
Oder hast du noch was, was du zur Suche sagen willst?

01:31:26.650 --> 01:31:26.850
Ja.

01:31:27.530 --> 01:31:27.790
Gut.

01:31:28.850 --> 01:31:30.850
Ja, ich nehme jetzt deinen Blick weg.

01:31:32.230 --> 01:31:33.190
Den musst du später machen.

01:31:33.970 --> 01:31:37.950
Armin Ronacher von Flask, der Mensch, der Creator,

01:31:38.810 --> 01:31:41.650
hat etwas Schönes vorgestellt

01:31:41.650 --> 01:31:43.710
und hat da einen kleinen Patch eingebaut.

01:31:43.810 --> 01:31:45.270
Das heißt, er nimmt einfach die Build-Ins

01:31:45.270 --> 01:31:48.850
und packt da Drachen dran.

01:31:48.850 --> 01:31:53.130
Und zwar True, False und Null, jeweils in klein geschrieben.

01:31:53.390 --> 01:31:55.090
setzt sie auf True, False und Null.

01:31:56.390 --> 01:31:57.210
Und dann kann man einfach

01:31:57.210 --> 01:31:58.770
JSON lesen.

01:31:58.850 --> 01:32:00.250
Ja, beziehungsweise halt reinpasten.

01:32:00.450 --> 01:32:03.270
Ja, genau, also basen und das ist direkt ein Dictionary-Objekt.

01:32:03.570 --> 01:32:05.370
Das ist schon relativ interessant.

01:32:06.370 --> 01:32:07.430
Das ist schon eine gute Idee.

01:32:07.610 --> 01:32:09.050
Ich wusste gar nicht, dass man das so machen kann und

01:32:09.050 --> 01:32:11.250
war so, das geht, aber

01:32:11.250 --> 01:32:13.230
cool. Der erste Kommentar über

01:32:13.230 --> 01:32:15.150
diesen Twitter-Feed, von dem du das gefunden hast,

01:32:15.190 --> 01:32:17.410
ist übrigens, I strongly recommend not doing this,

01:32:17.490 --> 01:32:19.230
it opens up a huge security hole.

01:32:20.110 --> 01:32:20.570
Ja, ja.

01:32:20.570 --> 01:32:22.570
Das ist völlig überbewertet.

01:32:23.390 --> 01:32:26.290
Aber ja, es ist sehr interessant und

01:32:26.290 --> 01:32:28.290
lustige Sachen sind da möglich, wenn man

01:32:28.290 --> 01:32:29.790
was wie die Build-ins einfach überschreibt.

01:32:33.290 --> 01:32:34.270
Also ich habe

01:32:34.270 --> 01:32:36.350
diesmal tatsächlich kein Modul

01:32:36.350 --> 01:32:38.630
zum Picken, aber ich habe ein wunderschönes GitHub-Repository

01:32:38.630 --> 01:32:40.530
entdeckt, was The Algorithms

01:32:40.530 --> 01:32:42.070
heißt und da gibt es einen

01:32:42.070 --> 01:32:44.330
Folder mit Python. Da gibt es quasi

01:32:44.330 --> 01:32:45.730
alle Algorithmen, die man so

01:32:45.730 --> 01:32:48.210
irgendwie mal für Python gebaut hat. Die sind jetzt alle

01:32:48.210 --> 01:32:50.030
nicht perfekt implementiert oder

01:32:50.030 --> 01:32:52.230
besonders schnell, aber man sieht

01:32:52.230 --> 01:32:53.770
so ein bisschen, wie das Prinzip dahinter steckt.

01:32:53.870 --> 01:32:55.110
Also, ob ihr jetzt Suchalgorithmen habt,

01:32:55.350 --> 01:32:57.970
Suchalgorithmen, ja, oder Sortieralgorithmen,

01:32:58.150 --> 01:33:00.150
oder für Webpringing, oder Matrizen,

01:33:00.330 --> 01:33:02.290
oder mathematische Sachen, und Machine Learning,

01:33:02.470 --> 01:33:04.470
oder Algebra, oder wie man mit Images was macht,

01:33:04.530 --> 01:33:06.390
wie man Hashes errechnet, oder so,

01:33:06.470 --> 01:33:07.490
welche gut sein sollen.

01:33:08.070 --> 01:33:08.970
So, das steht alles drin.

01:33:10.110 --> 01:33:11.290
Zahl, Verschlüsselung, Kompression.

01:33:11.950 --> 01:33:13.870
Könnt ihr euch alles mal angucken, ist eine tolle Bibliothek.

01:33:14.090 --> 01:33:15.690
Einfach so, Algorithms, Python und GitHub.

01:33:16.450 --> 01:33:16.890
Sehr interessant.

01:33:17.650 --> 01:33:19.450
Ach so, und was ich noch fast ganz vergessen habe,

01:33:19.450 --> 01:33:21.330
wir haben ja letztes Mal über Environments gesprochen.

01:33:22.230 --> 01:33:24.450
Und ich habe es tatsächlich geschafft, nach ein bisschen Struggle

01:33:24.450 --> 01:33:26.410
meine Environment, ich habe ja eine große

01:33:26.410 --> 01:33:27.570
Windows-Entwicklungs-Environment,

01:33:28.130 --> 01:33:30.550
umzustellen auf PyInfo und Poetry

01:33:30.550 --> 01:33:32.510
und habe das auch auf GitHub

01:33:32.510 --> 01:33:34.110
mal dokumentiert, wie das denn eigentlich geht.

01:33:34.810 --> 01:33:36.090
Falls ihr das irgendwie vorhabt, ich empfehle,

01:33:36.210 --> 01:33:38.150
wenn ihr das mit Poetry machen wollt, schmeißt alles Python,

01:33:38.230 --> 01:33:39.330
was ihr schon drauf habt, einmal weg,

01:33:40.110 --> 01:33:42.170
weil es sonst Hakeligkeiten mit eurem Pfad

01:33:42.170 --> 01:33:44.330
geben kann. Dann müsst ihr vielleicht auch einmal komplett aufräumen

01:33:44.330 --> 01:33:45.550
und putzen, weil

01:33:45.550 --> 01:33:48.030
die Dementierung

01:33:48.030 --> 01:33:49.130
PyInfo,

01:33:49.330 --> 01:33:51.830
das so ein bisschen komisch löst, die wird eure

01:33:51.830 --> 01:33:54.270
ja, Windows-Libraries

01:33:54.270 --> 01:33:56.610
mit einem grafischen Installer

01:33:56.610 --> 01:33:58.130
dann installieren, also die Python-Version,

01:33:58.230 --> 01:34:00.670
dass das ein bisschen anstrengend, aber dann passiert das alles automatisch

01:34:00.670 --> 01:34:02.370
und ihr habt diesen ganzen Struggle nicht

01:34:02.370 --> 01:34:04.410
und dann könnt ihr Portree und PyEnv

01:34:04.410 --> 01:34:06.470
wunderbar kombinieren, auch mit

01:34:06.470 --> 01:34:08.430
ja, eurer PowerShell.

01:34:08.550 --> 01:34:10.330
Es geht aber leider nicht so gut mit Toko, also nehmt nicht

01:34:10.330 --> 01:34:12.750
die Toko-Version, sondern versucht das, aber das GitHub-Repository

01:34:12.750 --> 01:34:14.410
zu ziehen, kann ich empfehlen. Ich hab da auch ein paar

01:34:14.410 --> 01:34:16.350
Skripte geschrieben, die das automatischer machen können.

01:34:17.630 --> 01:34:18.710
Wollte ich noch mal so kurz

01:34:18.710 --> 01:34:20.590
für die Menschen, die tatsächlich noch

01:34:20.590 --> 01:34:22.270
mit Windows arbeiten. Ich habe

01:34:22.270 --> 01:34:24.490
in NixOS reingeschaut, das gefällt mir

01:34:24.490 --> 01:34:26.510
richtig gut. Ja, das ist auch eine sehr coole Idee.

01:34:27.770 --> 01:34:28.590
Ja, dann bin ich

01:34:28.590 --> 01:34:30.470
aber noch dabei, meine Price Implementierung zu bauen. Mal gucken,

01:34:30.550 --> 01:34:31.150
ob ich das so

01:34:31.150 --> 01:34:33.550
weiterführe.

01:34:34.290 --> 01:34:36.430
Ja, aber das hat relativ wenig mit Suchmaschinen zu tun. Aber das war

01:34:36.430 --> 01:34:38.430
so für den Pick der Woche. Haben wir irgendwas vergessen?

01:34:39.790 --> 01:34:40.070
Ja,

01:34:40.390 --> 01:34:41.470
mir ist jetzt doch eingefallen,

01:34:41.610 --> 01:34:44.530
in dem Moment, wo ich gesagt habe, so haben wir nicht noch irgendwas vergessen.

01:34:44.530 --> 01:34:46.470
Ich hatte schon das Gefühl, wir haben irgendwas vergessen.

01:34:46.570 --> 01:34:47.670
Ja, haben wir auch. Aber egal.

01:34:48.730 --> 01:34:50.030
Und zwar gibt es halt noch ein ganz

01:34:50.030 --> 01:34:52.210
nicht unerheblich großen Teil

01:34:52.210 --> 01:34:54.690
Volltext

01:34:54.690 --> 01:34:56.550
suche, wo es nicht um Dinge

01:34:56.550 --> 01:34:57.450
geht, die jetzt

01:34:57.450 --> 01:35:00.390
ja so

01:35:00.390 --> 01:35:02.110
traditionellerweise da so, also

01:35:02.110 --> 01:35:04.670
dass man Queries hat, die man so gut in Tokens zerlegen kann

01:35:04.670 --> 01:35:06.470
oder wo man halt Tokens

01:35:06.470 --> 01:35:08.110
sucht,

01:35:08.110 --> 01:35:08.970
sondern

01:35:08.970 --> 01:35:11.510
solche Sachen wie

01:35:11.510 --> 01:35:14.850
Autocomplete in der Suchbox

01:35:14.850 --> 01:35:16.550
oder wo man

01:35:16.550 --> 01:35:18.450
halt einfach nur ein paar Buchstaben hat und möchte das

01:35:18.450 --> 01:35:18.950
halt finden.

01:35:20.030 --> 01:35:21.750
oder man möchte halt irgendwie

01:35:21.750 --> 01:35:23.550
einen Teil von einem Wort finden, irgendwo drin.

01:35:24.550 --> 01:35:25.810
Und das ist halt nochmal so

01:35:25.810 --> 01:35:27.850
ein bisschen anderes Problem und braucht halt ein bisschen

01:35:27.850 --> 01:35:29.150
andere Datenstrukturen dafür.

01:35:32.150 --> 01:35:32.470
Und

01:35:32.470 --> 01:35:35.350
ja, das

01:35:35.350 --> 01:35:39.650
vielleicht machen wir das auch einfach mal in anderen

01:35:39.650 --> 01:35:39.990
Szenen.

01:35:41.710 --> 01:35:43.230
Machen wir dieses Fass nicht nochmal auf.

01:35:43.490 --> 01:35:45.790
Aber das hätte eigentlich eventuell auch noch dazu

01:35:45.790 --> 01:35:47.810
gehört, weil das ist auch ein nicht unerheblich großer Teil,

01:35:48.030 --> 01:35:48.930
der halt auch im Grunde

01:35:48.930 --> 01:35:50.350
Es ist ja auch Volltext-Suche,

01:35:50.470 --> 01:35:51.470
das ist nur ein bisschen anders.

01:35:52.110 --> 01:35:52.570
Ja, okay.

01:35:53.110 --> 01:35:53.370
Naja.

01:35:54.130 --> 01:35:55.110
Ja, dann das nächste Mal.

01:35:55.270 --> 01:35:56.270
Also wenn ihr Fragen dazu habt,

01:35:56.410 --> 01:35:57.610
dann gerne wieder an

01:35:57.610 --> 01:35:58.550
highlightpricepodcast.de,

01:35:58.630 --> 01:35:59.670
das haben wir schon vorhin gesagt.

01:36:00.310 --> 01:36:01.990
Mögt uns und folgt uns auf allen Dingen,

01:36:02.190 --> 01:36:03.030
die wir so posten.

01:36:03.690 --> 01:36:04.930
Schreibt uns, freut uns auf euch.

01:36:05.050 --> 01:36:05.670
Bleibt uns gewogen,

01:36:05.770 --> 01:36:07.550
hört uns immer morgens, mittags, nachts, abends.

01:36:08.430 --> 01:36:10.730
Und ja, bis zum nächsten Mal.

01:36:11.130 --> 01:36:11.770
Jo, alles klar.

01:36:11.990 --> 01:36:12.490
Jo, tschüss.
