Transcript: Suchmaschinen

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Ja, hallo liebe Hörerinnen und Hörer, willkommen zum Python-Podcast in der heute 18. Episode.

Heute geht es um die Suche. Hier ist der Dominik und neben mir ist der Jochen.

Ja, hallihallo.

Grüß euch.

Wir sind wieder auf der Raumschiffbrücke heute.

Genau.

Erneut. Schön hier.

Ja, genau, Volltextsuche, um es genau zu sagen.

Ja, ah oh, Volltextsuche, ja.

Ja, aber wollen wir das eigentlich, oder ich meine, wir können einfach ganz normal starten, so mit News und Dings, ne?

Ja, ja, genau, ich würde auch sagen, wir machen jetzt wie immer unsere kleine Einleitung.

Vielen Dank an unsere zahlreichen Hörer.

Wir haben tatsächlich mittlerweile einige Millionen und dann die schönen Fragen, die uns immer erreichen.

Wir beantworten die immer gerne und versuchen immer, euch so schön wie möglich das zu erklären, was ihr gerne hören möchtet.

Also, wenn ihr Fragen habt, Lob, Anregungen, Kommentare, hallo at pythonpodcast.de,

schickt uns einfach eine Mail.

Oder kommentiert fleißig auf unserer Seite.

Ja, News aus der Szene.

Heute ist der Erscheinungstag von Python 3.8.2.

Ja, ist noch nicht raus.

Ist aber noch nicht da.

Ist noch nicht raus.

Wir haben gerade abends, es ist dunkel.

Genau.

Heute ist Rosenmontag übrigens auch.

Ja, ja, und das wird hier wahrscheinlich auch noch eine sehr jacke Veranstaltung.

Wir sind unbezahlt nach Hause gekommen, ja.

Ne, ich war heute heute eine der wenigen Leute, die irgendwie im Büro saßen und so.

Es war sehr angenehm, wir haben ein bisschen was geschafft gekriegt.

Ja, und da da eben, wenn du auf die Straße gehst und so aussiehst, wärst du schon verkleidet,

ist das auch gar nicht groß aufgefallen.

Ja, ja, ja.

Horror-Clown.

Kann ich empfehlen.

Ja.

Sehr gut.

Ja, wir machen heute Volltext-Suche.

Und ja, News aus der Szene, ist dir noch was eingefallen?

Hatten wir noch was Schönes?

Tatsächlich glaube ich eigentlich nicht.

War gar nicht so viel los, ne?

Ja, war nicht so viel los.

Gehst du hin zur Euro-Pheisen?

Ja, ja, ja.

Ja, schön, cool.

Wir müssen uns nur noch irgendwie mit Kindergarten und so erklären.

Ah, ja.

Wir machen ja auch irgendwie Betriebsferien und so, aber eigentlich schon, ja.

Ja, sonst musst du alleine.

Ich habe mir schon eine Wohnung organisiert.

Also, falls noch jemand eine WG sucht oder sowas, sag mir Bescheid.

Ja, was gab es noch?

Es gab so einen tollen Tweet, hast du gesagt, von Armin Ronacher.

Das ist der Haupt-Dev, der Entwickler von Flach.

Ja, aber das wollte ich eigentlich später erst picken.

Ach, das wolltest du picken?

Ja.

Ach, das ist ein Modul.

Ne.

Ich dachte, wir picken Module, Jochen.

Ja, heute nicht.

Oh Gott, jetzt hat es dich ernannt.

Ja, okay, dann picken wir keine Module.

Dann machen wir das am Ende.

Ja, aber was wir tun könnten, wäre, wir könnten ja heute mal mit dieser Tradition,

die wir jetzt schon seit einigen Episoden starten wollten, tatsächlich vielleicht mal

anfangen und ein Modul aus der Standard-Bibliothek uns vornehmen.

Ja, gute Idee.

Ja.

Und das nehmen wir Parslip.

Parslip, ja.

Ja.

Genau.

Genau.

Das immer wieder, wenn ich...

Wenn ich halt irgendwie in Code herumnavigiere und sehe dann irgendwo so Import, ja, OS und

dann halt OS-Pars und so und dann machen Leute dann Dinge, dann denke ich mir, ach, es geht

zu viel schöner mit Parslip.

Also vielleicht nochmal kurz, was Parslip ist.

Parslip ist ein Wrapper oder ist das eine komplett neue Implementierung?

Das ist ein Modul aus der Standard-Bibliothek.

Ich weiß jetzt gar nicht...

Über OS-Pars.

Nee, das ist kein Wrapper um OS-Pars.

Okay.

Nee, nee.

Das ist halt auch so ein bisschen...

Manchmal ist es so ein bisschen unübersichtlich.

Es gibt einige Module in der Standard-Bibliothek.

Okay.

Okay.

Okay.

Die halt so ein bisschen das Gleiche machen.

Unter anderem halt eben OS-Pars und dann Shell-Utils, also SH-Util.

Macht auch so ein bisschen das Gleiche, aber so ein bisschen eine andere Regenschmacksrichtung.

Parslip macht ja jetzt auch nochmal das Gleiche, aber auch wieder ein bisschen anders.

Ach ja.

Aber im Grunde denke ich, wenn man jetzt mit Pfaden irgendwie Dinge macht, dann ist Parslip

das, was man eigentlich haben will.

Und das ist auch so richtig...

Ich glaube, das ist auch jetzt seit Python 3, 4 oder so drin.

Ja.

Ja.

Und auch...

Aber auch erst seit 3.6 so richtig schön.

Oder 3.7 sind auch nochmal interessante Dinge dazugekommen.

Glaube ich ist Mounts dazugekommen in 3.7.

Also nur in aktuelleren 3.

Python 3 Versionen.

Also man kann halt relativ schick irgendwelche Strings zu Verzeichnisnamen oder Dateinamen

parsen und dann da Pfade, Pfadobjekte draus erstellen und dann einfach mit einem Slash

dahinter dann Unterverzeichnisse wechseln oder iterieren über so Pfade und die ganzen

schönen...

Listen anzeigen oder Content anzeigen, gucken, ist es ein Verzeichnis, ist es kein Verzeichnis,

ist es eine Datei.

Ja, genau.

Das Hauptfeature finde ich, dass man damit halt relativ einfach Pfade so hinschreiben

kann, ohne jetzt irgendwie viel Boilerplate-Code außenrum schreiben zu müssen, wenn man jetzt

aus Parse joinen und dann die Liste, das ist halt immer so ein bisschen...

Und jetzt kann man halt einfach, man schreibt halt ein Slash und dann macht dieser Operator

sozusagen eine Verkettung der Namen, die man da...

Ja, das kann man aus dem Dateisystem eigentlich auch kennen.

Ja, genau.

Genau.

Genau.

Genau.

Dann sieht das halt im Code fast genauso aus, als würde man es auf die Shell schreiben.

Und das ist natürlich schon deutlich kompakter und sieht einfach, ja, man sieht, was passiert.

Das ist ein tolles Ding, aber halt auch solche Sachen wie so Convenience-Funktionen für Sachen,

die man halt dauernd braucht.

Also sowas wie, ich brauche jetzt ja irgendwie mal den Versionen des Dateinamens ohne Endung,

also ohne irgendwie MP4 hinten dran oder MP3.

Oder auch mit, das geht auch.

Oder mit oder nur das Suffix oder so.

Solche, solche Dinge braucht man ja dauernd.

Und dafür gibt es halt dann eben schon eingebaute Attribute, die man einfach so verwenden kann.

Ja, das fand ich auch sehr angenehm.

Das ist halt total nett.

Genau.

Ich muss gestehen, als ich mit Python angefangen habe, gab es das schon.

Und deswegen habe ich OS-Path nur ab und zu mal angesehen und gesagt, ist das hässlich,

dann gesehen.

Ja.

Ach ja, okay, das gibt es jetzt, Pathslip.

Ja, ja, ja.

Ich stolper fast täglich über Code, wo halt noch OS-Path verwendet wird und nicht die Pathslip.

Ja, ja, ja.

Ja, ja, ja.

Ja, ja, ja.

Ja, ja, ja.

Ja, ja, ja.

Ja, ja, ja.

Ja, ja, ja.

Auch ganz oft in Dango ist das auch ganz oft drin in der Settings oder sowas.

Ich bin erst einmal irgendwo drüber gestolpert, wo es nicht mir gelang, das zu entfernen.

Ich bin mir halt nicht sicher, ob das an meinen Fähigkeiten lag oder an der Implementierung.

Ja, die brach dann einfach durch, weil ich Pathslip-Objekte genommen habe.

Ja, und wenn man das halt irgendwie anders gewohnt ist, dann gibt es unten auf der, wenn

man die Dokumentation sich anguckt, nochmal eine Liste von, also wie man das früher mit

OS-Path gemacht hat und jetzt wie man es mit Pathslip machen kann, Tabelle und da findet

man dann meistens schon die Tabelle.

schon die Funktion, die man sucht. Stellen wir euch in die Show los.

Ja, genau. Also, genau.

Damit haben wir das tatsächlich

mal gemacht.

Wir wollen jetzt tatsächlich das Einzeltreifen, was auch das

gemein hat. Und wenn ihr irgendwie von

unserem Podcast die Struktur irgendwie blöd findet, wann wir was

erzählen, dann könnt ihr auch dazu gerne mal Feedback geben,

wenn wir es irgendwie neu umsortieren wollen, wenn ihr

immer zuerst die Pics haben wollt oder erstmal direkt das

Thema, bevor wir irgendwas über News erzählen.

Ja, aber trotzdem, dann machen wir

Volltext-Suche weiter und ich werde dich löchern damit.

Oder wollen wir noch ganz kurz

ein Meta-Ding

kurz, also ich überlege

gerade, weil mich hatte der Katze

eine Mail,

wo

wir

packen wollen, ob wir nicht

mehr Dinge erklären könnten.

Ach so, stimmt.

Ich kann das durchaus verstehen. Also es ist halt

viele Sachen, die man einfach so

vor sich hin redet und nicht

drüber nachdenkt, die zu erklären, dann

wird es halt schnell unverständlich.

Aber auf der anderen Seite

ist es halt, glaube ich, schwierig.

Ja, es ist ein Trade-off. Einige Menschen, die kennen das halt schon alles und wenn man dann

jeden Schnipsel erzählt, ist es vielleicht uninteressant.

Dann wird es für die uninteressanter. Und die Frage,

an wen wendet man sich da eigentlich?

Wie Einsteiger wollen wir das Ganze machen? Ja, das ist gar nicht so einfach.

Ich glaube, bestimmte Sachen muss man vielleicht selber nachgucken

und man kann uns immer fragen, wenn man irgendwas nicht

versteht. Wir erklären das immer gerne nochmal

und nehmen das auch in einer der Folgen. Ich glaube, das ist

vielleicht eine gute Idee.

Und ja, tatsächlich, wenn uns irgendwas

auffällt, versuchen wir es so tief

wie möglich zu erklären.

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.

Weil ich würde sagen, das ist ja eigentlich

das Tolle an...

Ich komme darauf, weil letzte... Ich höre ja auch noch

viele andere Podcasts. Ich höre zum Beispiel Philosophische Radio

auf WDR 5

oder

die Radio Business. Ich weiß jetzt gar nicht, auf welchem Sender.

Ich höre es ja nur aus Podcasts.

Ich höre einen tollen Hockey-Podcast.

Genau, und die

sind der Meinung, dass sie da auch irgendwie Podcasts

machen und sagen, sie können das. Aber das ist kein Podcast,

sondern das hat halt irgendwie eine...

eine Zeitbegrenzung.

Und dann am Schluss fangen die auch mal an so...

Das müssen wir jetzt noch schnell sein.

Oder jetzt sind wir ja schon fast am Ende mit der Zeit.

Wo man sich denkt so, ja, warum eigentlich?

Ihr könnt ja auch eigentlich einfach weitererzählen.

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

sozusagen möglichst einfach zu erklären.

Und sie versuchen auch immer,

die Zuhörer mit einzubeziehen.

Was ich auch manchmal nicht

so richtig super gelungen finde.

Die können nicht irgendwie

veröffentlichen.

Auf der Seite,

wann wir die nächste Podcast-Folge aufnehmen,

sind Anrufer zugelassen.

Genau, das macht natürlich...

Ich verstehe natürlich, dass es bei einer

Live-Sendung den Reiz enorm erhöht.

Oder wenn man halt irgendwie auf Twitter

nebenher drüber lästern kann, was die gerade wieder

erzählen. Das erhöht den

Spaßfaktor deutlich.

Aber ich weiß nicht.

Ich glaube, das ist was anderes, als das ist dann halt

eher so Radio oder Fernsehen.

Aber eben nicht Podcast.

Weil für mich Podcast ist eher so das, was ich dran mag.

Ist halt etwas, was man eben

in diesen Massenmedien-Kontexten

halt nicht kriegt. Nämlich zum Beispiel,

was mich eben bei so einem Thema wie jetzt Philosophie

oder so eigentlich interessieren würde, wäre genau das,

was wir versuchen,

jetzt Bereich Python zu machen.

Nämlich Leute, die das

irgendwie sowieso sich damit beschäftigen,

die sich einfach mal so ein bisschen drüber unterhalten,

was sie da so tun. Und das gibt es halt

für sowas wie Philosophie nicht. Sondern da

hast du halt immer einen Moderator und dann halt

vielleicht einen Studierest oder so.

Und den Philosophischen Circle in der Stadt.

Also, ja, vielleicht muss man

da hingehen. Keine Ahnung.

Und dann wird das

irgendwie aufbereitet. Und dann ist da irgendwie

so ein Konzept hin. Und dann will man bestimmte Punkte abarbeiten.

Aber ich finde das halt eigentlich

überhaupt nicht interessant. Und gerade dann immer, wenn

irgendwie so Zuhörergeschichten da mit reinkommen,

denke ich mir immer so, jetzt war es gerade spannend.

Aber jetzt können sie da halt nicht weitermachen, weil entweder ist die Zeit vorbei

oder irgendwie

müssen sie nochmal auf ein anderes

Ding eingehen.

Und sie

geben sich halt auch mal sehr viel Mühe, dass dann

irgendwie

so zu verpacken, dass es halt

möglichst viele Leute erreichen kann. Was ja auch nichts

Schlechtes sein muss. Aber ich meine, im Grunde,

wenn man in einem Massenmedium ist, dann

ist das natürlich

das Ziel, irgendwie möglichst viele Leute zu erreichen.

Sonst müsste ich ja nicht das irgendwie

über Radiowellen

nach draußen senden.

Aber ist das eigentlich immer das, was man haben will?

Da bin ich mir nämlich gar nicht so sicher.

Also wir haben jetzt den kleinen Exkurs. Jochen redet nicht halber

Podcast.

Sorry.

Ich meine, man kann ja auch auf andere

Dinge optimieren. Mal so zum

Beispiel, wie nützlich ist das für die Leute,

die das zuhören. Es können ja weniger Leute hören, aber für die kann

das ja nützlicher sein.

Aber das geht jetzt eben bei einer Radiosendung

nicht. Wenn ich jetzt eine Radiosendung mache

und sende das halt irgendwie über den Sendemast,

übers Land, dann, und das ist für

100 Leute sehr, sehr relevant und für alle anderen,

die das halt trotzdem abkriegen,

super langweilig. Ja, also wir machen ja Podcasts und ich hoffe,

dass alle unsere Hörer auch tatsächlich wegen Python

und diesem und vielleicht auch, weil sie Lust drauf haben oder warum auch immer.

Also keine Ahnung, kann auch sein, dass ihr unsere

Stimmen so schön findet.

Aber zum Einschlafen.

Ja, das ist eigentlich...

Das ist keine so schlechte Idee. Nur nicht beim Autofahren und Einschlafen kommen.

Aber naja.

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.

Man kann ja jetzt einfach sagen, okay, ist mir egal,

ist nicht für jeden relevant, sondern für nur ein paar Leute.

Ja, aber ich glaube, weil wir eigentlich mit der Frage eingestiegen sind,

wie viel wir tief erklären.

Also erklärt uns doch mal gerne mit,

wie viel ihr denn erklärt haben wollt,

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

Ihr klärt euch das gerne nochmal oder ihr schaut das dann kurz nach,

also wie man dann das Internet

betrachtbar macht.

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.

Ja, Volltextsuche.

Voll gut.

Was ist das überhaupt, Volltextsuche?

Also wir wollen ja ganz Basis anfangen und erklären.

Was macht eine Volltextsuche?

Warum heißt es Volltext und was ist daran Suche?

Also,

habe ich einen Text und ich gebe eine Suchmaske

einen Begriff ein und der spuckt mir

aus dem gesamten Text alle Treffer aus

oder was ist das?

Ja, also,

ich meine, das ist auch ein Suchproblem,

sozusagen, wenn man versucht, in einem Text

irgendwas zu finden,

aber

Volltextsuche will das über viele Texte finden.

Ja, also der entscheidende Unterschied

ist eigentlich, dass man halt Dokumente hat

bei einer Volltextsuche.

Indizierbare Dokumente, also deren Inhalt du kennst

und dann möchtest du durch eine Masse von

Dokumenten bestimmte Stichworte

suchen.

Ja, also man hat

eine Anfrage oder

eine Query und dann möchte man halt die Sachen

finden, die da relevant sind.

Das Paper, das du benutzt, damit du

deine Hausarbeit nicht zweimal schreiben musst

oder einfach die nehmen kannst, die du findest.

Einfach, ne?

Ja, ich habe auch überlegt, wie man das am besten,

ich weiß nicht, ob die Analogie oder wie weit die trägt,

aber wie man sich das vorstellen kann, ist halt

wie bei einem Index in einem Buch.

Denke ich.

Ein Glossar.

Nee, nicht Glossar, erklärt ja die Begriffe, aber

ein Index tatsächlich gibt es oft in Büchern.

Ja, okay, also da gibt es dann noch, zu welchem Hit,

welche Seile.

Einfach sozusagen eine Liste der Wörter und dann auf welchen Seiten

die Wörter vorkommen. Also das ist immer das Wort.

Ich habe das sogar einmal in Kombination gesehen, glaube ich.

Also ein Glossar kombiniert mit der Erklärung und dann

die Hinweise, wo es auftaucht. Sehr schöne Sache.

Kann man wahrscheinlich auch machen, aber

genau, dann hast du halt eine kommaseparierte Liste

der Seiten, auf denen das vorkommt.

Das ist jetzt auf den

Volltextsuche-Dings.

Ja, wenn du es voll übertragen, wäre das halt so, dass die

Seiten in dem Buch wären halt die Dokumente,

die indiziert werden und der Index

in dem Buch ist tatsächlich dann halt so,

wie ein Volltext-Suchindex,

sehr ähnlich zu dem,

was man dann tatsächlich auch verwendet.

Und was hat das jetzt mit Python zu tun, Jürgen?

Ja, also

Oh,

das ist eine gute Frage.

Doch hat es aber,

weil man oft ja auch Suchmaschinen

irgendwie verwendet von Python aus

oder halt ab und zu auch mal Suchmaschinen in Python

implementiert.

Meiner Ansicht nach implementiert man viel zu wenig

Suchmaschinen, es sind viel zu wenig

Volltext-Suchmaschinen in Python implementiert.

Aber so ist es halt.

Aber zumindest, dass man

die irgendwie ansprechen muss und dann

irgendwas mit den Ergebnissen macht, das hat man ja relativ oft.

Welche hatten denn Suchmaschinen? Es muss ja erstmal eine Beispiel

geben für Volltext-Suchmaschinen, die man vielleicht

kennt oder auch nicht, oder?

Also da gibt es halt unterschiedliche,

es gibt natürlich die

große Google, die allwissende Müllhalde,

die wir alle kennen,

die wir kennen.

Vielleicht mit den entsprechenden Vorgängern,

so weiß ich nicht, Excite, AltaVista,

Hotbot.

AltaVista, das waren noch Zeiten.

Ja, und

das sind halt schon

relativ fortgeschrittene Dinge, also gerade Google ist

halt, oder auch die anderen modernen,

die es halt gibt, Bing oder

was gibt es da noch?

Gibt es eigentlich?

Du hast einen Microsoft-Suchmaschinen erwähnt, erneut.

Die haben aber immer noch keinen Contract leider

bekommen.

Oder

A9 von

Amazon,

wo auch einer der Experten

oder die Member,

hat er lange.

Also ja, also die Dinger sind halt

relativ fortgeschritten und haben halt,

sind halt relativ einfach gestartet.

Es gibt das Ganze jetzt auch als Software, sozusagen

Open-Source-Software, die man irgendwie verwenden kann,

oder halt auch 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. Also das ist, denke ich, ein ganz häufiger

Anwendungsfall, dass du halt eine

Webseite hast und möchtest halt eine Suchfunktionität

anbieten. Und ja,

dann muss das halt irgendwie

irgendwo passieren.

Und das,

was es da,

das, was da sozusagen

der Platzwürsch ist, ist

eine Java-Bibliothek

namens Lecine.

Ist von Duck Cutting

geschrieben worden. Der hat damit angefangen

1997 oder so. Der hat irgendwie mal

gearbeitet bei Excite, meine ich.

Und

hat dann irgendwann

hat er

oder meinte so, da habe ich irgendwo mal

im Talk gehört,

hat er so, ja, so

1997, hat er so das Gefühl, die Dotcom-Bubble,

die platzt jetzt demnächst.

So, hat noch ein bisschen gedauert, aber war

gar nicht so schlecht. Und

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. Und als dann

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

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. Und darauf

ist auch, dass

die Apache Software Foundation hat gerade angefangen,

irgendwie dann so unter ihrem Schirm

Projekte

aufzunehmen und

denen so ein bisschen Struktur zu geben. Und

weil man das ja noch nie gemacht hat,

weiß man ja nicht genau, was man da alles machen muss.

Mailing-Listen und wie organisiert man diese

ganze Entwicklungsgeschichte überhaupt.

Und er ist dann irgendwie mit dem Lucene-Projekt

dann da unter diesen Apache-

Sturm der Apache Software Foundation gekommen,

hat dann auch die Apache-License übernommen und

meinte, seitdem hat sich nie wieder jemand

über die Lizenz beschwert und es funktioniert.

Also es ist halt eine sehr liberale Lizenz, so

PSD-artig, MIT-artig.

Lizenz müssen wir auch nochmal neu entdecken.

Aber im Grunde heißt,

kann man dann mehr oder weniger machen, was man will.

halt auch im kommerziellen Kontext

verwenden oder in Software,

die man halt irgendwo hinschippt. Das ging jetzt mit der

GPL zum Beispiel eher nicht.

Ja.

Und

dann ist diese Bibliothek

relativ erfolgreich

geworden und heute ist es halt das Ding,

was alle verwenden und

eigentlich das Ding, was unter allen

bekannten

Suchmaschinen, Open-Source-Suchmaschinen

Implementationen irgendwie darunter liegt.

Also die beiden größten Dinger, die man heute so

kennt, sind halt Solar und

Elasticsearch.

Ja.

Und das weiß Lucene.

Man kann das auch aus Python heraus

direkt verwenden mit PyLucene.

Ja.

Aber das ist ein bisschen eklig.

Also das ist halt,

das macht halt direkt eine Anbindung

an Java.

Hört sich komisch an.

Ja, also geht schon,

aber will man vielleicht auch nicht verwenden.

Eher ist es wahrscheinlich die richtige Art,

wo man das dann trennt,

irgendwie eine API oder so.

Und das machen Solar und Elasticsearch auch so.

Also meistens hast du dann Elasticsearch

oder vielleicht Solar Cloud

auf irgendeinem Pflaster laufen oder weiß nicht.

Und auf deinem Hadoop-Cluster am besten.

Und dann connectest du dahin und

stellst da deine Suchquerys

an Fragen.

Ja, genau.

So sieht es halt irgendwie momentan aus.

Aber das ist natürlich,

also okay, es ist das Verbreitetste.

Das, was irgendwie alle, die meisten Leute verwenden,

ist aber nicht das Einzige. Es gibt noch eine Menge andere Dinge

und andere Software, die das halt auch kann.

Andere

äh

Open-Source-Suchmaschinen,

Suchmaschinen wären sowas wie, es gibt noch

Xapien, obwohl ich weiß nicht, ob es das tatsächlich noch gibt.

Das war irgendwas in C++,

glaube ich, nicht mehr relevant.

Sphinx gibt es noch. Das ist insofern

ganz

halbwegs relevant noch, weil das

halt eine enge Verbindung zu MySQL hat.

Und da gibt es halt irgendwie eine

Heißt das MariaDB?

Oder genau, wenn man heute MySQL sagt,

dann meint man eigentlich mal MariaDB.

Und da gibt es halt irgendwie relativ

ausgefuchste Mechanismen, wie man das halt ineinander

integriert und halt,

wenn man die eingebaute Volltext-Suche

vom MySQL nicht mehr verwenden will

oder wenn man da rausgewachsen ist, dann kann man da irgendwie relativ

leicht Sphinx dran bauen.

Ja, ähm.

Ja, da musst du gleich noch ein bisschen mehr zu sagen.

Also diese Architektur, also wenn du sagst, man packt das jetzt einfach so mal eben kurz

in einen Hadoop, ich sag mal, auf was bitte ist denn das?

Klar, da rein.

Und was das dann überhaupt macht, wo die Dokumente liegen

und wie das dann überhaupt so richtig funktioniert und so.

Ja.

Genau, genau.

Ich wollte gerade,

ach genau, es gibt eine

in Python implementierte

Volltext-Suchmaschine

namens Woosh.

Woosh?

Die sich auch

sehr stark an Lucene irgendwie so von der Struktur

intern anlehnt, aber

ist halt in Python geschrieben, ist nicht so schnell,

alles ein bisschen langsam, aber

kann man auch mal benutzen, ist irgendwie ganz nett

und dann, also lass mal überlegen, gibt es noch

irgendwas, was Volltext-Suche kann, was ich jetzt,

also was das irgendwie offiziell

hauptsächlich

tut und was ich noch nicht genannt habe?

Ja, also wenn jemand

noch was einfällt.

Und dann

gibt es halt noch Volltext-Such

Features in den meisten Datenbanken.

Und das ist natürlich auch nett,

weil meistens hat man

ja eh die Daten, in denen

man irgendwas sucht, sowieso schon in der Datenbank

liegen und eben wenn man

sowas wie Elasticsearch zutraut,

dann muss man halt irgendwie die Daten

aus der Datenbank da reinkriegen und

wenn man jetzt

ein Suchergebnis bekommt

von denen, dann muss man irgendwie,

wieder zur Datenbank und dann nochmal wieder

andere Informationen da rausholen. Das ist so ein bisschen

umständlich. Das ist ja eigentlich schön, wenn

das direkt in der Datenbank drin wäre.

Und ja, die meisten Datenbanken bieten da halt

auch Geschichten,

wobei das halt unterschiedlich

fertig oder

unterschiedlich komplett

das Feature-Set ist.

Postgres hat relativ viel

Volltext-Fähigkeiten.

SQLite

hat relativ viel. Das ist auch sehr, sehr

interessant.

SQL hat nicht so ganz so viele.

Aber so ein bisschen was geht auf jeden Fall auch.

Ja, und

das ist auch,

also ehrlich gesagt, das ist was,

was ich präferieren würde momentan.

Also wenn man anfängt, dann lässt man das eher

die Datenbank machen.

Dann macht man nicht,

fängt man nicht damit an, direkt irgendwie

den Elasticsearch daneben zu stellen.

Ab wann macht man das? An welcher Größe oder

welches Suchvolumen geht es da?

Das kann man so,

schwer beantworten.

Also weil meine Postgres jetzt auch

0,0x mehr die Antwort auf meine Frage geben kann.

Ja, genau.

Das heißt, ich bräuchte schon ein Dokumentenarchiv,

was ich irgendwo hinlege mit

mehreren hunderttausend Dokumenten,

durch die ich jetzt durchiterieren

müsste bei der Suche,

um zu finden, was es da so gibt.

Und da muss dann ein

Lucin

drauf springen, damit

es da noch einigermaßen performant

Ergebnisse rausbekommt.

Ähm, ne, das ist auch, also

die, die, ich würde

eher sowas sagen, wie es hängt halt von der Maschine

auch ab. Also wenn, sobald

das, was halt in Postgres relativ

schnell relativ groß wird, sind halt die Indizes.

Also super

optimal sind die halt nicht. Also

da ist schon einiges optimiert, aber

die werden halt relativ schnell relativ groß.

Und wenn die zum Beispiel so groß sind, dass sie nicht mehr in den Hauptspeicher passen,

dann hat man ein Problem.

Und das geht wahrscheinlich

dann mit Lucin oder beziehungsweise halt

Solar Cloud oder Elasticsearch.

Oder so dann besser. Aber da ist man schon bei

wirklich vielen, vielen Dokumenten wahrscheinlich.

Wie viele Hauptspeicher hat man denn dann, die man braucht,

für welche Dokumentengröße hast du da so Werte?

Ne, weiß ich nicht. Aber

keine Ahnung, kann sein,

also kommen wir halt auch drauf an, wie groß die

Dokumente sind. Aber

ich meine, heutige Daten haben viele Hauptspeicher

und bis man da irgendwie,

also ich weiß nicht, wie oft

ich einen Volltextindex 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

also

!

Was sind grundsätzliche Fragestellungen?

Ja, also zum Beispiel

wie macht man das jetzt eigentlich,

wenn man eine Suchmaske irgendwie auf einer Webseite

hat? Was ist eigentlich,

wie geht das mit der Relevanz?

Wie kriege ich das eigentlich raus, ob da irgendwie

gute Ergebnisse kommen? Wie mache ich

das? Und da ist auch leider

die Antwort,

es hängt davon ab und das ist je nach Anwendungsfall

sehr unterschiedlich.

Okay, jetzt wird es interessant. Also ich möchte

suchen, auch ranken, ja, und das heißt die

Trefferquote erhöhen.

Die Wahrscheinlichkeit, dass das Dokument dem

entspricht, was ich gerade haben möchte.

Genau, wenn Leute da irgendwas

eingeben, irgendeine Query eingeben, dann möchtest du, dass

sie halt normalerweise oder dass sie halt

möglichst vielen Fällen halt irgendwie relevante Ergebnisse

haben.

Ja, okay. Und wie das funktioniert, ist natürlich

jetzt sehr spannend. Ja.

Also

wie, wie, wie, wie, wie, wie so ein Index

funktioniert, ist halt im Grunde, wenn ich mir

vorstelle, das wäre jetzt eine,

äh,

ich hätte jetzt eben dieses Buch mit dem Index

hinten drin und ich würde jetzt wissen

wollen, okay, ähm,

wo kommt denn das Wort, was könnte ich denn für ein Wort,

äh, was könnte ich denn für ein Wort, äh, was könnte ich denn für ein Wort, äh,

Keyword.

Keyword und, äh,

Python. Und Python, ja, wo kommt

denn das überall vor? Und ich hätte gerne alle Seiten, auf denen

das vorkommt. Dann gehe ich einfach in den Index,

äh, nehme halt, äh,

suche halt das Wort

Keyword, nehme die Seiten,

die Nummern, packe das

in ein Set und, äh,

nehme das, äh, nehme das gleiche

Set der Seiten von, äh,

Python. Und jetzt kann ich

da halt zwei Dinge machen. Ich könnte es entweder

schneiden, könnte sagen, irgendwie,

ich hätte gerne alle Seiten, in denen beides

vorkommt, oder sozusagen, also die Schnittmenge

der beiden Mengen

und, äh, oder ich könnte sagen, ja, ich nehme

die Vereinigung, also

entweder das ist, wo Python drin vorkommt

oder wo Keyword drin vorkommt, die Seiten hätte ich gerne

und kriege dann einfach alle.

Und das ist ja auch das, was man sozusagen in, ich glaube,

Google hat da eine Syntax für, äh, das

ist übrigens auch bei Postgres, kann man, ähm,

die Syntax, die Google verwendet,

äh, äh, äh,

TS2, äh, wie heißt das,

2Query, irgendwas, 2WebQuery, ach, ich weiß nicht,

wie die Postgres-Funktion heißt, die übergibt

man einfach diesen Query-String, den man bekommen hat

und dann macht die daraus eine Anfrage,

äh, nach der gleichen Logik, sodass man

halt auch und oder oder verwenden

kann, sozusagen.

Ähm, ja,

und, ähm,

äh,

genau, das ist eigentlich im Grunde

das, was halt die Suchmaschine macht. Das Problem ist jetzt

natürlich, äh, die, die, die

Seiten, wie auch immer man die jetzt bekommen hat, ob man,

äh, die Mengen vereinigt oder

geschnitten hat, äh,

äh,

man hat jetzt noch keine Reihenfolge der, der Seiten

irgendwie. Und die, die Frage wäre halt,

wie, wie berechnet man die aus und das,

was halt so, äh, von immer gemacht

wird und, äh, zählen,

äh, absolute Zahl sortieren,

höh. Kann man, kann man und könnte man auch machen,

ja, aber das, was halt, äh,

was halt schon, äh,

was normalerweise immer so für, für

Scoring, äh, Ranking verwendet wird, ist

halt TFIDF, das hatten wir, glaube ich, auch

schon ein paar Mal, ist halt einfach, äh,

der, die

Query wird halt in einen,

äh, ja,

TFIDF-Faktor verwandelt und, ähm,

sozusagen die,

äh,

Also außer Leute, die davon schon Ahnung haben,

hat das jetzt niemand verstanden, deswegen musst du noch mal

kurz erklären, was das denn überhaupt ist.

Äh, TFIDF ist Term Frequency

mal Inverse Document Frequency

und das legt sozusagen

Gewichte fest für die

Tokens, also die

Wörter aus deiner Query für Keyword

und für Python jetzt in unserem Beispielfall.

Ja.

Und, ähm,

ja, das ist halt,

ich weiß nicht genau, ob man genau erklären muss, wie das, wie das

ausgerechnet wird, äh,

äh, also Term Frequenz

wäre halt sozusagen auf dieses, äh,

Seitenbeispiel, äh, übertragen,

wie ist die Frequenz von dem

Wort Python zum Beispiel auf dieser Seite?

Das heißt, ich zähle, wie oft

Python auf der Seite vorkommt und teile

das durch die Anzahl aller Worte

auf der Seite. Dann weiß ich halt, wie viel Prozent

der Worte auf dieser Seite sind halt Python.

Mhm.

Das ist die Term Frequenz.

Und, ähm, äh, multipliziere

das mit der Inverse Document Frequency, das ist

halt sozusagen, in, in wie viel

äh,

Seiten kommt denn

dieses Wort überhaupt vor?

Mhm. Äh, ein Maß dafür und,

äh, je, äh,

weniger das vorkommt,

desto, äh, höher ist

die Inverse Document Frequency.

Mhm. Äh, und, äh,

desto charakteristischer ist das Wort

im Grunde. Für das, was da gerade

steht. Ja, genau. Das heißt, du weißt

nämlich genau, wenn das hoch ist auf diesem Abschnitt

geht's tatsächlich jetzt um Python und es wird

nicht irgendwie nur als Seitenkommentar mal kurz

erwähnt oder als kurz... Genau, genau. Also Artikel

sind halt zum Beispiel für Sachen, die, äh,

also der, die, das, das kommt halt auf jeder Seite vor.

Ja, okay, Stopwatch. Daher ist es halt

einfach nicht so relevant, weil

Inverse Document Frequency davon wäre halt sehr, sehr

niedrig, weil, äh,

naja, es kommt halt überall vor, das heißt, äh,

ja. Ähm, jetzt multipliziere

ich diese beiden Teile, also einmal wie oft

kommt das, äh, Wort auf der Seite

vor mit, äh, wie wichtig

ist das üblicherweise oder wie charakteristisch ist das

und das Ergebnis ist halt sozusagen

ein Maß dafür, dass, also Worte,

die wenig vorkommen oder

sehr charakteristisch sind, aber

sehr oft vorkommen, sind halt viel wichtiger als Worte,

die, äh, überhaupt

nicht charakteristisch sind, weil sie überall vorkommen, also der, die,

das ist halt, äh, die kriegen halt sehr

niedrige Gewichte und, äh, Worte, die

halt sehr spezifisch sind, die kriegen halt sehr hohe Gewichte.

Und das macht man jetzt auch mit der Query

und macht das auch nochmal mit allen, äh,

Seiten sozusagen und dann, äh,

multipliziert man das miteinander, also

die Kursinduzistanz. Das heißt, man muss halt

tatsächlich genau diese Dinge bilden

oder bauen für jeden einzelnen

Textbaustein, den man untersuchen

möchte. Ja, man muss, man muss

da gar nicht so viel machen, tatsächlich,

also das Bauen der Listen,

in welchen Dokumenten welches Wort vorkommt, ist halt

eigentlich das, was man hauptsächlich

tut, wenn man einen Index baut.

Diese ganzen Geschichten, wie oft kommt das Wort

jetzt wo vor und wie, das wird,

das speichert man auch in dem Index, aber das ist eigentlich

nicht so schlimm, das geht eigentlich

relativ einfach. Und dann am Schluss hat man diese

ganzen Informationen, auch die Texte nicht mehr, sondern

man kann halt sozusagen aus dem, was man im

Index stehen hat, plus der Query halt diese

ganzen Sachen ausrechnen.

Okay. Du sagst irgendwas über den Kursinduzistanz.

Ja, ja, genau. Wenn ich jetzt zwei Vektoren habe, dann

ist die Kursinduzistanz dazwischen einfach

nur der Winkel,

äh, also der Kursinduzistanz zwischen den beiden

Vektoren. Also jetzt nochmal kurz, also der

Vektor ist tatsächlich dann die Information

darüber, auf welchen Seiten wie viel

Information über das gesuchte Wort

Python oder Keyword steht.

Ja, also die, genau, die Gewichte

sind jetzt sozusagen die Werte in dem Vektor

und, ähm, können halt

niedriger oder höher sein.

Das wird immer normiert auf, die Vektoren werden

immer normiert auf 1,

auf eine Länge 1 sozusagen.

Und der Anteil von einem

Wort, das halt wichtig ist, ist halt dann einfach

höher als von Worten, die nicht so wichtig sind.

Und die Länge der Vektoren, man normiert

auch deswegen damit halt längere Vektoren nicht einen Vorteil

haben, ja, oder das halt längere, wenn du

das nicht normieren würdest, dann würden

Seiten, auf denen viele Worte stehen oder

die halt sehr, sehr lang sind, würden halt viel

relevanter bei den vielen Suchabfragen sein, einfach weil

die halt auch viel mehr Sachen matchen.

Daher, äh,

normiert man das halt auf eine Einheitslänge,

sodass halt dann, wenn ein Dokument

sehr lang ist, kriegen die einzelnen Worte halt weniger

Gewicht.

Und, ähm, ja,

dann wird das halt vergleichbar.

Und, ähm,

äh, ja, also im Grunde ist das

eben relativ einfach.

Also diese TFE-DF-Distanz

ist halt nichts weiter als der

Kosinus zwischen dem Winkel der beiden

Vektoren. Und das klingt jetzt auch irgendwie kompliziert.

Tatsächlich ist es so, es ist halt super einfach

auszurechnen, weil, äh,

das ist einfach nur

das Skalarprodukt der Vektoren.

Und das wiederum ist super einfach auszurechnen.

Also dieser Vektorraum, äh,

in dem diese Operationen stattfinden, äh,

wenn man jetzt sozusagen jedem Wort

eine Dimension zuordnet, äh,

Texte, also, wenn man jetzt

ein Dokument-Korpus nimmt, ganz viele Dokumente,

dann kann es sein, dass da so ein paar

10.000 Wörter drin vorkommen oder vielleicht,

wenn man jetzt, also vielleicht auch ein paar 100.000,

also, und man

hat jetzt sozusagen für jedes Wort eine Dimension,

dann

klingt das irgendwie, äh, alles ganz schrecklich.

Wenn man sagt, ein 100.000-dimensionaler Vektorraum

ist ja irgendwie schwer vorzustellen und dann

daran irgendwie Winkel, uh, was soll denn das sein?

Aber eigentlich ist es

halt total, äh, total blöd.

Einfach, weil, äh, das Schöne daran ist,

oder das ist der Grund, warum man das macht, ist,

ein Skalarprodukt an der Stelle ist halt, wenn, wenn das so spars ist,

also die meisten Worte kommen ja in den meisten Texten

gar nicht vor. Das heißt, wenn ich, äh,

einen Dokumentvektor habe, dann ist der

an den allermeisten Stellen null.

Und alle Dinge, die null sind, die muss ich mir

beim Skalarprodukt gar nicht angucken. Wenn die miteinander,

wenn irgendwas multipliziert wird, wo eine Null drin ist,

dann ist es ja sofort auch wieder null. Das heißt,

ich muss mir... Könnt ihr das auch mal nachrechnen, bitte?

Ja, das heißt, die Rechenoperation ist halt,

ich gehe durch jedes, äh,

Ding in der Query,

ja, also nur durch die, die gesetzt sind, das sind ja meistens nur

zwei, drei Worte, und gucke dann,

existiert im Index dafür,

äh, Seiten, auf denen

das vorkommt,

und

das war's. Mehr muss ich nicht machen. Und damit habe ich ja schon,

sozusagen, alle, wo ich

überhaupt ein Skalarprodukt ausrechnen kann,

gefunden.

Und, äh,

jetzt muss ich nur noch ein paar andere statistische

Werte haben, um das halt wirklich ausrechnen zu können.

Und das ist halt, äh,

das ist halt eine total einfache Operation.

Also das ist halt...

Weißt du, welche anderen statistischen Werte du

jetzt noch haben möchtest zum eigentlichen Ranken?

Äh,

äh,

äh,

naja,

tatsächlich müsste man wahrscheinlich noch an jedem,

also die, die, die Dinge

im Index heißt dann Posting-Listen, dann müsste man

wahrscheinlich noch irgendwie den TF-EDF-Wert

tatsächlich, also ich, ich weiß es ehrlich gesagt nicht,

Lucine macht das,

weiß gar nicht, was Lucine da alles speichert, ich speichere noch ein paar andere Sachen,

ähm,

ich würde sagen, TF-EDF-Wert braucht man vielleicht,

also eigentlich, also ich glaube, Lucine und so,

die machen das so, dass sie das auch erst ausrechnen,

wenn die Query kommt.

Aber was das genau ist, weiß ich jetzt auch nicht mehr.

Also man kann das Ganze auch, äh,

leicht und naiv implementieren, äh,

in, in Python, man kann einfach für diese

Posting-Listen, das sind sozusagen die

Listen, äh, der Seiten, auf denen irgendwas

vorkommt, oder die IDs der Dokumente,

die packt man einfach an ein Set

und indizieren

bedeutet einfach nur

Text, die Dokumente zu tokenisieren

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 das im Allgemeinen, aber in unserem Fall werden das

jetzt, wenn man jetzt sozusagen als Daten-Zu-File,

oder für Sets nehmen würde, Sets, und dann kannst du

halt hinterher, wenn eine Query kommt, äh, irgendwie

genau das machen, kannst halt irgendwie Schnittmenge

und Vereinigungsmenge bilden, je nachdem, ob du

deine Query mit End oder

Or verknüpfen willst, und,

ähm, ja, kriegst dann,

kriegst damit schon mal was raus,

und kannst halt auch, äh, äh, wenn du jetzt

die TF-IDF-Werte

noch mitgespeichert hast, kannst du auch einfach die Queries-Interessanz

ausrechnen, und hast dann schon

im Grunde das implementiert, was eine

Suchmaschine so tut. Das geht

wahrscheinlich in 30 Zeilen,

Python oder sowas. Ja, ja, wir lieben

Python. Also das ist, äh, das, das,

das geht relativ einfach, denke ich mal.

Äh, und, äh,

es ist auch mit, ich hab's mit Sets auch schon mal

ausprobiert, das ist auch ziemlich schnell.

Das, was an Sets

ein bisschen doof ist, deswegen macht man das auch

dann tatsächlich, wenn man jetzt eine Suchmaschine

implementiert, nicht so, ist,

äh, dass die halt sehr, sehr

viel Hauptspeicher verbrauchen.

Mhm. Äh, und überhaupt,

man muss natürlich alles, wenn man so ein

Python-Set hat, muss man zum Hauptspeicher halten, weil

ähm,

naja, äh, es ist halt eben keine Datenstruktur,

die irgendwie auf der Platte liegen kann, ja, während jetzt

ein Lucene-Index ist ein Ding, das eigentlich auf der Platte liegt,

und, ähm, das kann, also

das kann halt auch größer als Hauptspeicher werden, ist gar kein Problem.

Und, äh, das ist, äh,

so gebaut, dass, äh,

ähm,

ja, das maximal

performant ist, wenn Sachen

von der Platte auch gelesen werden und so,

und, äh, es ist, äh,

es ist, das sind schon einige schöne Tricks dabei.

Und, ähm,

aber tatsächlich, wenn man das jetzt einfach so

implementieren möchte, äh, kann man das mit

Sets durchaus mal machen. Was dann die, ähm,

großen Suchmaschinen

machen, und weswegen das Ding auch

Postinglist, äh, heißt, ist,

dass man das eben nicht in einem Set hält, sondern

in, äh,

in einer, in einer Liste,

die sortiert ist,

äh, sozusagen, wo die,

wo eben die Dokument-IDs oder jetzt, äh,

äh, im Beispiel Seitenzahlen,

die werden halt einfach sortiert, und dann speichert man

nicht die Seitenzahlen selber,

oder die IDs selber, sondern

man speichert nur die Differenz dazwischen.

Mhm. Weil die Differenzen zwischen

den IDs sind halt viel kleiner.

Und dann macht man etwas ganz

Fieses, das nennt sich Variable-Wide-Encoding.

Aha.

Schon wieder so ein Zauberwort, ja.

Äh, und,

äh, das, äh,

das bedeutet halt, dass du, äh,

diese, äh, normalerweise

in C oder so, wenn du

jetzt, äh,

äh,

ein Array hast, ja, dann,

müssen ja alle, äh, Werte in dem Array

den gleichen Typ haben.

Und das

macht man halt nicht so,

um Platz zu sparen, sondern man, äh,

deswegen hat, äh, man nimmt einfach,

äh, üblicherweise dann Characters,

also Byte-mäßige Dinge,

ich weiß gar nicht, also in C weiß ich jetzt, wie es geht, ich hab auch mal

sowas, äh, glücklich mal selber

implementiert, das, ja, ja.

Das war

fast Suchmaschine geschrieben, aus Versehen.

Aber, ähm,

äh, äh,

ich weiß gar nicht, wie man das in Java oder so macht, ich weiß

keine Ahnung, ähm, geht, geht bestimmt

auch irgendwie und, äh, definiert sich

die Datenstruktur selber. Also, es ist

nicht so, dass man sagt, okay, das sind jetzt alles Integer-Werte

oder so, sondern man sagt, okay, das ist

einfach nur ein Array von Charaktern

und wie viel,

äh, Bytes ich sozusagen

pro, ähm, oder wie viel Bit

ich pro, äh,

Eintrag in der Posting-Liste,

äh, verwende, das, äh,

das mach ich, das verwalte

ich selber, weil wenn die,

äh, die Abstände klein sind, dann kann ich

viel weniger Bits nehmen, als wenn die Abstände groß sind,

dann muss ich halt mehr Bits nehmen und

deswegen heißt das Ding auch Variable Byte Encoding,

weil, äh, die, ein Eintrag

in der Posting-Liste halt unterschiedlich viele Bytes

haben kann, je nachdem, wie groß der ist.

Mhm. Oder wie der Abstand ist zwischen

der vorherigen und der nächsten ID.

Und, äh, wenn ich jetzt sortierte Listen habe,

dann kann ich die sehr, sehr gut, da gibt's halt diverse

Algorithmen für, äh, kann ich sehr gut schneiden,

zum Beispiel solche Operationen wie, äh,

Schnittmenge davon bilden, das geht halt toll.

Äh, geht mit Sets auch, aber Sets,

können ja noch viel mehr und so,

äh, aber da brauch ich ja eigentlich

nur diese Schnittoperation, Vereinigung ist auch, äh,

total, äh, simpel und das geht

halt super, wenn ich so sortierte Listen habe.

Ähm, ja.

Und, äh, ähm,

genau, äh, das ist halt

auch, das ist relativ schnell, das ist vor allen Dingen auch

deswegen schnell, also

die Kompression an der Stelle, die ich dadurch

kriege, also ich krieg das auf ein Drittel des

ursprünglichen, also wenn ich das einfach nur als Integer speichern würde,

dann, äh, brauch ich,

ja, äh,

äh,

ähm, sagen wir mal, ich brauch einen Speicher 1,

ja, und wenn ich das irgendwie Variable,

äh, mit Variable Byte Encoding, äh,

kodiere, dann brauch ich halt nur noch 0,

Speicher 0,3, also das reduziert das halt

auf ein Drittel. Mhm, mhm. Und es ist

auch noch viel schneller. Und der Grund, warum es viel schneller ist,

ist halt einfach, dass der, das

Bottleneck ist halt, äh, irgendwie

das durch die CPU zu drücken,

also die Speicherbandbreite ist das Problem, du musst das halt

irgendwie, diese, diese Listen von Arrays musst du

halt irgendwie durch die CPU kriegen und irgendwie

durch den Hauptspeicher und wenn die kleiner sind, dann geht das

schneller durch den Hauptspeicher, weil, äh,

oder durch den Bus, weil, äh, ja,

und das in der CPU dann auszupacken

und, äh, miteinander, das ist ja alles kein

Problem mehr, äh, aber,

äh, ja, das halt aus dem Hauptspeicher

durch die CPU zu quetschen, das ist halt das Problem

und wenn das kleiner ist, dann geht das halt schneller,

weil du hast halt nur so, so viel

100, äh, oder so, so viel

Gigabyte pro Sekunde, die du da durchkriegst.

Und, ähm,

ja,

äh, genau, deswegen, deswegen macht man das so,

das macht das Ganze so ein bisschen kompliziert,

äh, aber

ja,

äh, und auch selbst, selbst so

von dem, von dem Volltextindex von

Postgres weiß ich, dass er das auch so macht, im Prinzip,

also die, solche Sachen werden da auch schon gemacht, also

kann man sich schon vorstellen, das ist schon relativ,

äh,

ist halt nicht so eine total naive Implementation,

das ist auch ganz schön optimiert schon.

Ähm, ja,

äh,

Jetzt haben wir eine schnelle

Suchanfrage schon, aber ich hab immer noch

nicht genau verstanden, warum,

ähm, die Ergebnisse

jetzt besonders toll sein sollen. Es gibt bestimmt noch ganz viele andere.

Genau, TFR, die FS, so der Standard,

äh, das hat man ganz lange gemacht, jetzt, äh,

heutzutage auch nicht mehr, sondern

heutzutage nimmt man eher sowas wie,

äh, also es gibt halt zum Beispiel

Track-Konferenzen, äh,

Track, das hört sich nach, äh,

einer Raumschiff-Serie an.

Ja, äh, wird eher mit C

geschrieben und nicht mit K, aber, äh,

äh, da haben sich Leute halt Gedanken

darüber gemacht, wie evaluiert man eigentlich

Suchergebnis, äh,

äh, äh, Performance von, von,

von Suchmaschinen, da gibt's dann diverse Standard,

äh, Corpora

mit Dokumenten drin, wo man dann halt auch

Standard-Querys halt immer drauf abfeuert und dann guckt

halt, wie sind die Ergebnisse und so,

und, ähm, da hat sich irgendwann,

ich weiß gar nicht, wann das, äh,

also, so 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 man,

manchmal passt man die so ein bisschen an, manchmal kommen so konstante

Faktoren dazu oder so, die man irgendwo reinbaut,

und dann wird das, werden die Ergebnisse

ein bisschen besser, und das, was momentan,

also, das, man hat ganz viele unterschiedliche

gegeneinander getestet, das, was in den

meisten Fällen gut funktioniert, und das, was

jetzt auch alle so als Standard, glaube ich,

verwenden, äh, nennt sich

BM25. BM25?

Ja, oder OKAPI,

äh, BM steht für

Best Match. Ja.

Ähm, und, äh, OKAPI.

Ja. Ja. Das ist,

das ist, glaube ich, ein Spektier.

Ja, ja, genau, genau, daher kommt das auch.

Oh, äh,

äh,

Entschuldigung.

Mhm, und, äh,

das ist, ist

nicht großartig anders, äh, als

TF-IDF sozusagen standardmäßig, so ein paar

Dinge sind halt noch dran, das war,

eigentlich sind da nur so ein paar magische

Konstanten und Faktoren drin,

äh, und, äh,

ja, das ist halt so ein bisschen

Fummelei, und, äh,

ist auch nicht offensichtlich, warum das jetzt genau dieser Art

besser funktioniert als die anderen, deswegen heißt es,

und genau deswegen ist es auch BM25,

ja, also man hat halt ganz viele Dinge ausprobiert,

und das, was dann halt über ganz viele

Data, äh, Datasets hinweg

und Queriesets gut, am besten funktioniert hat,

ist halt dieses Ding, nämlich nicht

BestMatch13 oder 47,

sondern BestMatch25 hat sich

herausgestellt, also das funktioniert in den meisten Fällen

irgendwie. Das ist doch eine tolle Zahl, übrigens, ja.

Ja. Äh, also man konnte

das vorher gar nicht sagen, was das jetzt, welches

von denen dann wirklich gut funktionieren würde, und

dieses Ding ist halt das. Und seitdem das

in den, in diesen, ähm, auf dieser Konferenz

halt dann, ja, das Ergebnis

rausgefallen ist. Guckst du eigentlich Pika?

Ja.

Äh, die, die Serie?

Ja, ist das eine neue Star Trek-Serie? Ja,

tatsächlich hab ich jetzt auch mit angefangen, weil

ich dachte, so gut. Ich hab auch schon zwei Folgen geschafft.

Ja, es gibt jetzt fünf,

glaub ich, ne? Kann sein, ich hab keine Ahnung.

Ja, jetzt war jetzt ein

verregneter Sonntag, äh,

dieses, äh, da haben wir,

glaub ich, tatsächlich alle geschafft.

Cool. Ja, läuft grad auf Prime, sehr schön.

Ja, Entschuldigung, ich wollte dich nicht von der Track-Konferenz

abhalten. Ja, ja, also ansonsten

bin ich ehrlich gesagt gar nicht so ein Star Trek-Fan.

Aber, ja,

da hat der Track-Faktor doch irgendwie

mit, äh, mitgezogen.

Der Flog in Flossbach, ne?

Ja.

Äh, jedenfalls, ähm,

äh, genau, genau.

Also das ist halt dabei rausgefallen, deswegen implementieren das alle.

Äh, das ist auch

immer irgendwie, das ist auch schon über zehn Jahre her

oder so, da dachte ich dann so, ah, da hab ich davon gelesen,

Best Met 25, voll gut, äh,

bringt auf jeden Fall noch ein bisschen was gegenüber

TFWF und so. Dazu kann man das nicht in

Hüsine einbauen, ha. Und dann hab ich

da so ein bisschen reingeguckt und dachte mir so, oh nein.

Hahaha, das geht nicht.

Ich muss so viele Klassen anfassen, das kann man

einfach völlig vergessen.

Und, ähm, war relativ

enttäuscht und hab mir damals schon gedacht,

Lysin! Dreck!

So ein Unsinn. Aber, äh,

mittlerweile haben das andere Leute dieses, äh,

haben das implementiert.

Die hatten mehr Lust da drauf, ja.

Mehr Ausdauer und jetzt ist es halt drin und es funktioniert

und, ähm, das ist auch das, was man, glaube ich,

automatisch irgendwie kriegt als Default.

Äh, ja.

Was war denn damals

bei den ersten Suchmaschinen? Also, äh, Alter Vista

zum Beispiel war ja so mit,

TFWF.

Ja, oder leichte Abwandlung davon, aber wesentlich anders.

Äh, das ist auch das, was, äh,

irgendwie so ein bisschen diese ersten

SEO-Geschichten, äh,

getrieben hat.

Also, wo Leute dann, also,

angefangen haben, alle möglichen Worte mit in

ihre, äh, Seiten zu packen.

Ja, für die sie gefunden werden wollen.

Ja. Weil das zielt natürlich

genau darauf ab, halt irgendwie den

TFWF, den TFWF-Wert,

hoch zu, und das funktioniert ja auch.

Also, wenn du es ganz naiv machst, kannst du damit

tatsächlich, äh, irgendwie dann für alles Mögliche

gut ranken.

Ja, es lässt sich halt sehr leicht gamen. Aber,

äh, ja,

ähm, funktioniert heute natürlich

alles nicht mehr so richtig toll und dann...

Wird du gestraft. Hö. Ja, ja, ja.

Ähm,

ja, das ist auch noch so ein Thema, SEO, ne?

Äh, aber,

äh, genau, also, diese,

aber daran sieht man schon, dass das mit der Relevanz

irgendwie nicht so einfach ist, dass die ganzen,

ähm, Suchmaschinen haben das auch nicht so richtig,

äh, hingekriegt. Und die

erste, die das halt so ein bisschen, die was fundamental

Besseres gemacht hat an der Stelle, die hat halt

alle anderen dann, äh,

äh, wie, wie sagt man das, aus dem Wasser

geblasen.

Äh, ja, hinter

sich gelassen und ist jetzt halt irgendwie

die Größte. Ich muss mir gerade

ein großes Niefährt vorstellen, das einmal in die Badewanne

hüpft. Ja, genau.

Ähm,

ja, weil eben

so ein einzelner Wert,

ist halt so, ist halt problematisch, ne?

Leute fangen an, dann drauf zu optimieren und dann ist

auch das die Frage, was für

Leute oder was, was für Fragen stellen

die Leute eigentlich und kann man das eigentlich

damit abbilden? Ist das, ist der Wert,

so ein TFEDF, so ein Kursinus Distanzwert,

ist der für alle Arten von Suchanfragen und

Dokumenten immer das Richtige? Und da ist auch die

Antwort relativ klar, nein, ist nicht so.

Also, und das ist halt etwas,

was Leute, glaube ich, oft nicht

so wirklich auf dem Schirm haben,

dass, äh,

dass ihr Problem oft nicht ist,

dass irgendwie, äh, ja,

äh, eine etwas bessere TFEDF-Formel

zu finden oder, äh,

irgendwie was Magisches, was irgendwie

anders die Relevanz gut macht, dann plötzlich

magisch, sondern dass, äh, eigentlich

die Zeit besser investiert wäre, sich

zu überlegen, okay, was habe ich eigentlich für Dokumente,

was habe ich eigentlich für Suchanfragen da drauf

und was kann ich tun, um das irgendwie

zu verbessern? Und da gibt es auch viele

Dinge, die man machen kann, aber das sind halt, je nachdem, was

man für ein Problem hat, sehr unterschiedliche Sachen.

Äh, zum Beispiel, aber ich meine,

es ist eigentlich, äh, ich, vielleicht kann ich einfach ein paar,

äh, Beispiele dafür nennen, warum das halt, äh,

äh, also TFEDF,

wenn ich jetzt, äh,

zum Beispiel Location-Informationen dabei habe, hilft mir halt

nicht so richtig viel. Also ich suche nach einem Restaurant-Namen

irgendwie, äh,

auf, auf, bei Google Maps oder so.

Dann hilft es mir nichts, wenn ich

jetzt TFEDF die nächsten

Namen irgendwie

kriege von allen Restaurants in Deutschland

oder weltweit, äh, sortiert.

Dann wird wahrscheinlich irgendwo ein Restaurant

in Kuala Lumpur vielleicht irgendwie am ähnlichsten

sein oder den besten Score haben, aber

hilft mir ja nichts, weil ich komme da ja gar nicht hin.

Das heißt, da muss irgendwie die Information,

wo ich bin und, äh,

wie nah das an mir dran ist, ja auch irgendwie mit

rein. Sonst, äh,

geht das bestimmt nicht so toll.

Ähm, oder halt,

wenn ich jetzt, äh,

ja, nehmen wir eben

eine E-Commerce-Seite habe,

äh, oder eine Hotelbuchungsgeschichte oder was auch immer,

etwas, wo halt hinterher Leute dann

was kaufen oder was buchen oder so,

dann kriege ich ja eine ganze Menge

implizite Informationen darüber,

äh,

was die Leute relevant gefunden haben

zu einer Query. Also wenn jetzt eben man nach irgendwie,

keine Ahnung, äh,

ähm, samtbezogene Sessel

Amsterdam gesucht hat oder sowas

und dann hinterher irgendein Hotelversuch hat,

dann weiß ich, dann weiß ich

halt, das ist wahrscheinlich relevant gewesen

für diese Suchanfrage und diese

Information kann ich natürlich auch wieder irgendwie,

äh, mitverwenden, um das, äh,

beim nächsten Mal, wenn jemand anders so eine

Anfrage stellt, äh, das zu verbessern.

Aber auch da hilft mir halt TF-IDF gar nicht.

Also, ähm,

ähm,

ähm,

ähm,

ähm,

ähm,

ähm,

ähm,

ähm,

ähm,

ähm,

ähm,

ähm,

ähm,

ähm,

Geht es tatsächlich darum, dass die Informationen über diesen einen Menschen für alle anderen Menschen zu manipulieren?

Ja, also genau, es geht nicht um die einzelne Geschichte, aber ich erfahre sozusagen über das Verhalten von Leuten etwas darüber,

welche Sachen für welche Dokumente, also welches Hotelzimmer, wenn ich jetzt so eine Hotelbuchungsengine habe

oder welches Produkt irgendwie, wenn ich eine E-Commerce-Seite habe, relevant war für eine bestimmte Suchanfrage.

Weil wenn jemand das sucht und dann kauft, dann war es wahrscheinlich relevant.

Es gibt natürlich auch Ausnahmen, es kann auch sein, dass ich, keine Ahnung, ich nach, weiß ich nicht, Dörrautomaten suche

und dann aber so geflasht bin von dem, was hast du hier, einem Luftbefeuchter, den ich irgendwie sehe im Ergebnis,

obwohl er völlig irrelevant ist und dann darauf klicke und ihn sofort kaufe.

Direkt neben dem goldenen Schieberrad, vielleicht waren die auch zusammen in einem.

Aber so.

Also im Durchschnitt ist es wahrscheinlich so, wenn Leute was suchen und dann auf irgendwas aufklicken, das kaufen,

dann war das wahrscheinlich relevant.

Und die Informationen sozusagen, wie viele der Leute, oder wenn ich jetzt eine neue Suche,

jetzt stellt jemand nochmal die gleiche Query und jetzt kann ich ja an das Suchergebnis mit ranpappen,

okay, Leute, die diese Suchanfrage auch gestellt haben oder so und so viele haben das gekauft, so und so viele haben draufgeklickt.

Leute, die das gekauft haben, kauften auch.

Ja.

Ja, ist nicht so ganz das Gleiche, aber das kann ich auch zum Ranken benutzen.

Muss ich ja nicht.

Kann ich auch.

Nur mit TF-IDF hat das nichts zu tun.

Ich muss mir halt überlegen, wie ich das so kombiniert kriege, dass es da halt irgendwie auch zum Ranken mitverwendet wird.

Und tatsächlich ist es halt meistens so, dass man irgendwie andere Dinge, eben Location, irgendwie kaufen Leute das überhaupt.

Ist das irgendwie interessant?

Ja.

Ja.

Ja.

Gehört das irgendwie zu den Dingen, die momentan irgendwie auf meiner Seite sowieso angefragt werden?

Oder ist das halt irgendwas uraltes oder so?

Diese ganze Information muss ich irgendwie zusammenpacken und das muss irgendwie in die Relevanz mit reinfließen.

Und ja, das macht das Ganze natürlich so ein bisschen komplizierter.

Aber wenn man das macht, dann kann man halt auch durchaus deutlich bessere Ergebnisse erzielen.

Vor allen Dingen auch zum Beispiel gegenüber Google oder so.

Weil Google kann halt all das im Grunde nicht machen, weil die wissen halt nicht genau, was die Leute da eigentlich suchen.

Es ist halt ein viel breiteres Ding.

Im gesamten Web kann ich irgendwas finden.

Also Google macht ein viel schwereres Problem.

Das heißt, ich kann, wenn ich das richtig mache, in einem engeren Rahmen halt viel bessere Ergebnisse unter Umständen erzielen, als jetzt Google das jemals könnte.

Und das kann natürlich sehr interessant sein unter Umständen.

Aber ich muss dann halt solche Sachen mir schon angucken.

Es reicht nicht, wenn ich da irgendeine Elasticsearch nehme, das in der Default-Konfiguration laufen lasse.

Und dann hoffe ich, dass das irgendwie gut wird.

So einfach ist es leider nicht.

Oder was auch total interessant ist, was Leute oft nicht machen, aber was halt so eine total einfache Geschichte ist,

sich anzugucken, was für Queries geben die Leute eigentlich ein?

Und was sind denn die Queries, wo kein Ergebnis kommt?

Ich finde das ja sowieso immer total unverständlich, wenn ich jetzt irgendwie auf...

Oft habe ich den Fall tatsächlich, ich suche...

Keine Zeit zu kochen, keine Lust oder so.

Okay, dann lass doch mal irgendwo was zu essen bestellen und abholen oder so.

Okay, das war ganz gut.

Geh mal auf die Webseite, um zu gucken, hat der Laden denn jetzt auf oder nicht?

Immer wieder.

Ganz viele Läden kriegen das irgendwie nicht hin, die Öffnungszeiten drauf zu schreiben.

Und haben aber vielleicht ein Suchfeld.

Und wenn die Leute da immer Öffnungszeiten reinschreiben und die nicht finden...

Oder die Öffnungszeiten sind irgendwo versteckt, irgendwo in tiefer Struktur.

Und dann kommt man ja auf die Idee, man sucht danach.

Und wenn ich jetzt so eine Seite habe und die Leute immer Öffnungszeiten reinschreiben,

und nie irgendwas finden, dann weiß ich, okay, hier kann ich vielleicht was verbessern.

Und das ist etwas, womit relativ leicht man wahrscheinlich viele Benutzer besser zufriedenstellen kann.

Und das wird irgendwie überraschend selten, wenn solche Sachen gemacht werden.

Und man kann natürlich auch noch dann schummeln.

Und dann sagen, okay, wenn...

Wenn Öffnungszeiten eingegeben wird, zeigt immer als erstes die Öffnungszeiten an und nicht die Ergebnisse, die Suche zurückkommt.

Genau.

Also das ist halt so ein bisschen wie...

Wenn man sich vorstellt, man hat eine Firma und die hat irgendwie so eine Support...

Oder ein Helpdesk oder irgendwie eine Support-Hotline oder so.

Dann hat man ja bestimmt auch irgendwie, keine Ahnung, wenn man einen neuen Mitarbeiter da einarbeitet,

dann setzt man den da hin und sagt dem hier so, hier ist eine Liste mit den 50 häufigsten Fragen oder Problemen,

mit denen die Leute zu dir kommen werden.

Und da sind die Antworten da drauf.

Das kann man ja einfach verwenden sozusagen.

Man wird ja nie auf die Idee kommen, ja, die Leute rufen jetzt an und dann...

Sieh halt mal zu, irgendwie.

Dann nimmst du TF-IDF oder dann gehst du an den Akten...

Dann nimmst du TF-IDF oder dann gehst du an den Akten...

Dann schrankt hinter dir und guckst, was dabei rauskommt.

Das wird halt nicht gut funktionieren.

Insofern, also die...

Oft ist es...

Man hat so immer so Power-Law-Verteilungen.

Eine Power-Law?

Ja, Power-Law.

Also Potenzmengen-Verteilungen.

Ich weiß gar nicht, wie das deutsche Wort dafür ist.

Dass du...

Das hat man bei ganz vielen Sachen.

Dass halt 20% der...

Sozusagen Such...

Also 20% der...

Also bei Suchmaschinen wäre das wahrscheinlich.

Ich hoffe mal, ich sehe keinen allzu offensichtlichen Unsinn.

Aber das heißt, 20% der Queries machen halt 80% der Suchanfragen aus oder sowas.

Kommt natürlich auch drauf an.

Es gibt wahrscheinlich auch Suchmaschinen, die sehen ganz viele Queries nur einmal und dann nie wieder.

Und da sind...

Manchmal ist der Tail halt länger und manchmal ist der Tail auch dicker.

Aber oft ist es so, dass eine kleine Anzahl von Queries macht halt schon einen großen Teil der Anfragen, die überhaupt gestellt werden, aus.

Und wenn das...

Wenn das halt 100 Stück sind, dann kann man die sich halt alle mal angucken und sich überlegen,

okay, was könnte man den Usern, die dauernd diese Anfragen stellen, denn vielleicht mal zeigen, was sie interessieren könnte.

Und das hat dann gar nichts mehr mit...

Was ist dies...

Was macht eigentlich die Volltext...

Was macht eigentlich diese...

Suchmaschine.

Software, die Volltextsuche macht, sondern wie gehe ich mit diesen Problemen irgendwie um auf der Seite.

Und natürlich muss ich dann halt irgendwie eine Art haben, wie ich...

sicherstelle, dass wenn ich jetzt irgendwelche Änderungen mache, dass es nicht kaputt geht beim nächsten Release.

Und ich muss es testen.

Und all diese ätzenden Softwareentwicklungs-Past Practices und so, die man halt einhalten sollte, wenn man irgendwie Dinge programmiert.

Aber wenn man das macht, kriegt man damit auch Ergebnisse, die ganz gut sind.

Also du würdest dann vielleicht einen Junko bauen oder so und dann...

Zum Beispiel, ja.

Und dann einfach an die Suche dann bestimmte Dinge, Bedingungen knüpfen.

Wenn das und das steht, dann machst du irgendeine Liste von Fragen, denen dann eine Antwort zugeordnet ist.

Und wenn das kommt, dann wird die direkt ausgespuckt und ansonsten wird dann die Suchmaschine bedient oder sowas.

Ja.

Nur dann, wenn das nicht...

Also und dann geht es halt sozusagen in eine Suchanfrage und dann wird halt gerankt nach all den anderen Dingen, die man halt auch so...

Also vielleicht ist es sogar ein Modell, das irgendwas rankt.

Aber gut, habe ich jetzt auch noch ein...

Aber halt irgendwas, wo man sich relativ sicher sein kann, dass das sinnvoll ist.

Und erst wenn das alles nicht klappt, dann fällt es zurück auf sowas wie TF-IDF.

Aber mit TF-IDF anzufangen, das ist eigentlich ein...

Ja.

Ja, okay, keine gute Idee.

Also du hast gesagt, okay, TF-IDF, das ist das Standard, was zum Beispiel ein Elasticsearch oder ein Zola als Standard machen.

Weil das das Beziehen drunter ist, was das irgendwie auch kann.

Obwohl das dieses BM25 macht.

BM25 ist eigentlich sozusagen das, was dann wahrscheinlich verwendet wird meistens.

Das ist dann schon besser, aber...

Aber die Unterschiede sind nicht so groß.

Also natürlich macht das in gewisser Weise einen großen Unterschied.

Wenn man jetzt viele Suchanfragen hat und die Seite, wofür Umsatz ist und dann die Ergebnisse ein Prozent besser werden, dann ist das ja schon mal super.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ohne Ohm schicting viel Geld, was dann zusätzlich reinkommt und so.

Aber das sind halt so...

Also die Änderungen an diesen Details, das bringt nicht so wahnsinnig viel.

Ein bisschen was.

Änderungen an...

Man bezieht jetzt zum Beispiel implizites User-Feedback mit ein, wie zum Beispiel Klicks

oder halt irgendwie welche Price-Range jemand angegeben hat oder solche Dinge, das bringt

halt viel, viel mehr.

Ja.

Ohm schicting.

Da kann man ganz, ganz viele tolle Informationen eigentlich sammeln und verwenden.

Da kann man richtige Wissenschaft draus machen.

Ich glaube, da sind auch ziemlich viele Marketeers, die sich mit sowas auseinandersetzen irgendwie.

Die dann irgendwie Interesse daran haben, wie man das besser bastelt.

Interessant, ja.

Ja, ja.

Das ist ja auch so ein Thema, wenn man jetzt selber sozusagen nicht in der Rolle von einer Suchmaschine ist,

die Leuten irgendwie Sachen finden möchte,

sondern umgekehrt der Rolle des Dokuments, das gefunden werden möchte, sozusagen.

Also wenn man eine Webseite hat, die halt über Google zum Beispiel gefunden werden will oder so,

dann hat man dieses SEO-Problem.

Da gibt es ja auch ganz unterschiedliche Aspekte.

Und auch da ist es halt so, dass üblicherweise wird dann halt zu sehr auf die technischen Aspekte fokussiert.

Und dann wird halt irgendein Quatsch gemacht, weil der gerade halt irgendwie Mode ist oder hip.

Oder wo das Gerücht geht, das kann man jetzt machen und das ist voll toll.

Und dann wird man sofort bei Google super gerankt.

Und das funktioniert zwei Monate, dann kommt der nächste Patch und dann ist man down.

Dann werden alle gelöscht, alle Ergebnisse, die man vorher hatte.

Also ich habe gehört, Content ist King.

Ja, also Google versucht, also zumindest das Team versucht immer auf den besten Content zu optimieren.

Die schmeißen alle Sachen drauf, die sich so Leute ausdenken.

Das heißt, langfristige Strategie wäre tatsächlich, qualitativen Content aufzustellen,

der dann auch gut suchbar ist, der mit solchen TF-IDF-Sachen vielleicht dann auch irgendwie klarkommt.

Aber der dann durch die, also vielleicht haben die einen Qualitäts-Ranker,

der sich irgendwie durch irgendwelche Daten ergibt und den sie dann damit bauen.

Ja, was sie halt machen.

Also Internetsuche ist ja sowieso nochmal was anderes als Volltextsuche,

weil man ja da noch andere Dinge mit einbezieht.

Also die Links-Struktur, wie was, also früher war es ja vielleicht immer so,

dass dann 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.

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 sind halt die Ersten, die mehr Informationen reingenommen haben.

Und ich würde sagen, natürlich, das ist absolut ganz normal, Volltextsuche eigentlich alles.

Aber Google waren halt die Ersten, die jetzt nicht nur TF-IDF oder irgendwas,

eine Variation davon verwendet haben.

Google hat den PageRank eingeführt.

Sondern sie haben einen PageRank, genau.

Was ist denn der PageRank?

Das hat gar nichts mit Seiten zu tun.

Ja, genau, genau.

Das heißt, könnte man denken, das ist das mit dem,

so wurde es wahrscheinlich.

Das wurde wahrscheinlich auch oft interpretiert.

Mit dem PageRank.

Mit dem Rank, der Page zu tun hat, den man halt so hat.

Und es gab auch so irgendwie Browser-Plugins,

die einem den eigenen PageRank auf der Seite angezeigt haben und so.

Aber nein, das Wort kommt tatsächlich von Larry Page,

also einem der beiden Gründer von Google,

der das halt in seiner Doktorarbeit irgendwie einen neuen Algorithmus

irgendwie vorgestellt hat für das Ding auszurechnen,

in großen Matrizen halt Eigenwerte auszurechnen.

Also ich glaube, das ist irgendwie Power Iteration oder so.

Ja.

Du hast gerade noch zwei Sachen gesagt.

Einmal dieses Power-Dings, das habe ich jetzt schon wieder vergessen,

wie es hieß, und gerade Eigenwerte berechnen aus Matrizen mit PageRank.

Vielleicht erzähl mir das nochmal als einzelne kleine Subkapitel.

Ja, ich weiß gar nicht, ob es so relevant ist.

Ich glaube, man kann das auch, wenn man das in Detail irgendwie,

dann wird das relativ trocken und langweilig.

Also ich meine, im Grunde ist, was es tut, ist relativ einfach erklärt.

Es hat was zu tun mit, also man kann den Link grafen,

das Web, also das Web.

Das Web ist im Grunde ein Graph.

Eine verknüpfte Knotenpunkte, die durch Linien wieder einer verknüpft sind.

Die Linien sind links.

Ja, die Graph-Mathematik-Refinitionen sind länger aus Knoten und Kanten

und irgendwie, keine Ahnung, es gibt gerichtete,

und das Web ist ein gerichteter Graph.

Also ich kann halt auf eine Seite linken

und die linken nicht auf mich zurück.

Und ja, es gibt jetzt,

das Ding hat bestimmte Eigenschaften,

die es halt besonders machen.

Also zum Beispiel der Link-Graph des Webs ist halt super spars.

Das ist halt, die meisten Seiten haben nur Verbindungen zu ganz,

ganz wenigen anderen.

Ja, aber, also es gibt ja auch Graphen,

wo alle miteinander irgendwie verbunden sind.

Das ist beim Web nicht so.

Zu den allermeisten Seiten habe ich eben keine Links.

Und ich kann den als Matrix darstellen,

indem ich sage, okay, alle Webseiten oder Knoten

sind halt irgendwie die Zeilen und Spalten der großen Matrix.

Und ja, wenn ich einen Link habe,

dann trage ich da jetzt zum Beispiel eine 1 ein

in der entsprechenden Zeile und Spalte.

Also wenn ich jetzt von X nach Y...

Also in der Zeit kommt dann eine 1,

wenn ich von meiner Seite auf deiner Seite link höre,

das steht.

Da 1.

Genau.

Ja, und das kann ich für das gesamte Web machen

und das in eine Matrix packen.

Was natürlich ein bisschen schwierig ist.

Auch da kann ich halt nutzen,

dass das Ding spars ist

und dass die allermeisten Werte 0 sind.

Und die, die 0 sind,

die schreibe ich halt einfach nur irgendwo hin.

Und da kann ich mir ganz sparen,

die irgendwo muss ich nicht speichern.

Das heißt, ich muss ja tatsächlich sozusagen nur da,

wo Links sind, irgendwas speichern.

Und ja, dann kann ich zum Beispiel im PageRank ausrechnen,

ist einfach nur sozusagen ein Maß

für die,

Wahrscheinlichkeit,

wenn ich einen Random Walk

über diesen Graphen mache,

auf diesem,

auf dem Ding vorbeizukommen.

Also wenn ich zufällig irgendwo durchs Internet surfe,

mit irgendeiner zufälligen URL,

mit der ich angefangen habe,

komme ich dann dahin, wo ich hin will.

Ja.

Oder gibt es einen Startpunkt?

Ja, laufe ich da drüber.

Ja, genau.

Also...

Laufe ich über diese Seite, ja genau.

Also gibt es einen Startpunkt?

Nö, das fängt halt irgendwo an.

Klickt sich einfach irgendwo durch.

Ja, random, ja.

Ja, okay.

Wikipedia-Artikel 1, 2, 3, 4, 5,

dann Querverweis auf irgendeine Quelle,

die bei einem Nachrichtenportal,

das sind auch irgendeine...

Ja.

Und was das Ding im Grunde,

sozusagen abbildet,

ist,

wie wichtig,

wie zentral,

ist eigentlich eine Seite.

Und...

Also wie tief in diesen Knoten,

wenn man sich das Web jetzt doch wieder

als Knoten vorstellt oder sowas,

und dann der zentrale Knoten,

welche Seite ist das?

Ist das wahrscheinlich mittlerweile Google?

Ich weiß es nicht.

Gibt es da,

weißt du das?

Gibt es das?

Naja, keine Ahnung.

Mit dem größten Page-Rank

müsste dann ja eigentlich

Google selbst,

selber sein.

Ja, Wikipedia ist immer weiter oben,

aber Google,

nee, glaube ich gar nicht mal.

Google,

die Links,

die Google ausgibt,

sind auch nicht,

genau,

die gehen da nicht mit in den Graphen rein.

Ja, okay.

Also,

ich weiß es nicht.

Aber ist auch eigentlich egal.

Spannend.

Ja.

Aber wenn man das jetzt kombiniert

mit eben TF-EDF

aufgeschickt,

dann ist das halt viel besser,

als wenn ich das nur

wenn ich nur TF-EDF nehme,

weil es ist halt in gewisser Weise

ein Maß dafür,

ja, sozusagen,

wie wichtig ist diese Seite eigentlich

insgesamt.

Und dann kombiniere ich halt

eine lokale Geschichte,

TF-EDF mit irgendwie

so einer eher globalen Geschichte.

Und das funktioniert dann schon ganz gut.

Und das führt halt dazu,

dass ich eben solche simplen,

ich schreibe jetzt fünfmal

ein Keyword auf eine Seite,

Spiele reinhalten,

dann nicht mehr funktionieren.

Weil dadurch werde ich halt nicht

zentral im Graph,

dass ich das tue.

Und aber auf der anderen Seite,

das ist halt das,

was dann die Leute mit den Backlinks

immer meinen.

Also wenn du halt ganz viele Links hast,

die auf dich zeigen,

dann bist du natürlich zentraler.

Aber jetzt kannst du die Links

natürlich auch wieder gewächen

und das ist ein Katz-und-Maus-Spiel

und keine Ahnung.

Aber Google verwendet jetzt

auch nicht nur PageRank

und irgendwie sowas TF-EDF-artiges

oder so,

sondern die verwenden halt

ganz, ganz viele.

Ich habe es gerade mal auch gemacht.

Der PageRank gibt es jetzt irgendwie

neun und zehn.

Also das ist irgendwie

nummerlich gestellt.

Und PageRank 10 ist tatsächlich

Google.com

und The Government of India,

India GovN.

Aha.

CNN.

Und ja,

was hast du,

wie drei Kontos hast du?

Und dann gibt PageRank 9

ist auch Python dabei,

also Python.org.

Also wenn du einen Link

von Python.org kriegst,

dann voll gut.

Ja, genau.

Das zählt was.

Naja, also tatsächlich

heutzutage ist es so,

es wird ganz, ganz viel,

also nicht nur diese beiden Werte,

also nehmen wir an,

würdest jetzt nur TF-EDF

und den PageRank haben,

dann hättest du zwei,

oder die sind,

im Suchmaschinenbereich

nennt man das mal Signale,

im Machine Learning Bereich

würde man das Features nennen,

sondern Google

sammelt eher so hundert,

sagen sie so,

aber tatsächlich sind es

wahrscheinlich noch ein paar mehr.

Und das Ranking ergibt sich daraus,

dass jetzt diese

Signale,

von denen ein paar

aus der Query kommen

und möglicherweise auch aus dem User,

der die Query gestellt hat,

ein paar kommen aus dem Dokument,

eben wie sowas wie PageRank

oder

so.

Ähm,

kommt die Query irgendwie

in der Domain vor

oder sowas.

Äh,

ein paar kommen aus einer Kombination

von Query

und Dokument.

TF-EDF wäre so ein Fall,

ne,

da multipliziert man das ja miteinander.

Und jetzt hat man halt

sozusagen für jedes Suchergebnis

äh,

so ein Vektor

mit irgendwie

vielleicht 100 Einträgen

oder 200

oder 500

oder so.

Und dann hat man halt

üblicherweise ein Modell,

ist auch völlig egal,

ob das jetzt ein Machine Learning

trainiertes Modell ist

oder ob das ein Modell ist,

das Leute von Hand getunt haben.

Es kommt aufs,

das gleiche raus,

letztlich,

ähm,

dass diese Vektoren halt

in Reihenfolge bringt

und irgendwie halt ein,

ein endgültigen Score halt

ausgerechnet.

Ja.

Äh,

im simpelsten Fall könnte das

einfach eine gewichtete Summe

sein zum Beispiel.

Mhm.

Äh,

du sagst halt,

wie wichtig ist mir

jedes einzelne Feature,

dann machst du halt

die Summe drüber

und,

äh,

normierst das vielleicht

noch irgendwie oder so.

Und, ähm,

dann sortierst du halt

nach der,

äh,

nach der Summe.

Äh,

könnte man machen.

Oder man kann's halt

dieses Modell halt auch

irgendwie trainieren.

Äh,

und, ähm,

ja,

kriegst dann halt irgendwie

am Schluss, äh,

eine Sortierreihenfolge.

Und, äh,

ja,

das ist halt eher so

das, was heute gemacht wird.

Äh,

das ist lustigerweise

aber in den ganzen,

also zumindest,

ich weiß nicht,

ob es kommerzielle Suchmaschinen

gibt,

die das implementen,

die sowas ähnliches machen.

Die ganzen, ähm,

Open Source Suchmaschinen

können das nicht.

Mhm.

Nicht so,

also so ein bisschen.

Also man kann so ein bisschen

was machen,

aber so richtig.

Ein bisschen woosh,

aber so richtig.

Aber so richtig toll

können die das,

also so cool wie irgendwie

die großen dazu machen,

machen die das eigentlich nicht.

Das ist auch so etwas.

mich, mich,

mich ärgert ja so ein bisschen

oder mich wundert,

dass es da so wenig,

also es ist viele Dinge,

die halt so im

Bereich Websuche oder so

halt, äh,

irgendwie

schon lange gemacht werden,

äh,

oder da, äh,

das kommt halt nie

so richtig an.

Also was mich zum Beispiel

wundert ist,

äh,

was Google seit 2004,

glaube ich,

macht oder so,

die halten ihre NTCs

alle nur noch im Hauptspeicher.

Die gehen gar nicht mehr

auf die Platte,

weil Platte ist immer

so ein bisschen blöd,

weil, äh,

du kriegst halt Latenzen,

werden halt unvorhersehbar.

Mhm.

Äh,

plötzlich, äh,

liegen halt deine Sektoren

ungünstig, äh,

irgendwie du musst warten,

bis das da vorbeikommt

und du musst aber viele Sachen

miteinander, äh,

mergen und jetzt

liegen die Kombinationen

von,

es ist halt,

die Sektoren sind halt

ungünstig korreliert

und plötzlich musst du halt

auf eine Querie

sehr lange warten.

Das ist eigentlich

totaler Mist.

Du willst eigentlich

relativ sicher sein können,

dass es halt nach so und so viel,

äh,

Millisekunden oder so

halt durch ist

und das kannst du eigentlich

nur dann garantieren,

wenn das ganze Zeug

immer im Hauptspeicher liegt

und wenn du noch ein paar

andere Sachen irgendwie

berücksichtigt hast

und Google,

ich glaube auch,

das ist der Grund,

warum Google das so macht,

äh,

die möchten halt wissen,

okay,

wenn jemand eine Suchanfrage

eingegeben hat

und, äh,

dann das an die,

an diese tausend, äh,

Server,

die halt jeweils nur

einen Teil vom Index haben,

schicken und dann kommt

ein Ergebnis zurück,

dann wissen wir halt,

nach 20 Millisekunden

ist das halt durch.

Wenn da Platten im Spiel wären,

könnte man das überhaupt

nicht mehr garantieren,

weil, äh,

ja,

da hast du halt Pech

und irgendwo musst du halt

auf eine Platte warten,

äh,

und die Seek Time da ist halt,

äh,

bei Platten auch,

sind halt mal 10 Millisekunden

oder noch mehr,

äh,

und dann wird das Gesamtergebnis

halt langsam dadurch,

das ist halt irgendwie Kacke.

Aber jetzt,

wenn man sowas wie Lucene hat

oder irgendwie Elasticsearch

oder Solar,

da kann dann das durchaus passieren.

Also,

wenn man Pech hat,

dann ist eine Query halt langsam

und zwar auch nicht deterministisch

irgendwie bestimmte Queries,

sondern halt irgendeine,

was halt, äh,

naja,

aber das ist halt so designt.

Also,

es kann auch sein,

dass man mittlerweile sagen kann,

okay,

nur, äh,

dieser Index soll in Memory liegen

oder so,

aber ich weiß es nicht so genau.

In dem Fall mich wundert,

dass das halt,

weil bei den Hauptspeichergrößen

heutzutage sollte das

auch überhaupt kein Problem sein,

dass man halt

den Index, äh,

halt im Hauptspeicher hält,

ne,

und wenn das nicht reicht,

dann vielleicht mal mehr Maschinen dazu,

ist auch,

warum,

warum muss das auf,

äh,

wie legt man das auf die Platte,

äh,

optimiert sein?

Das macht auch heutzutage

eigentlich keinen großen Sinn mehr.

Oh,

da hab ich noch was vergessen,

äh,

bei den,

äh,

äh,

es gibt ein Ding,

Redis,

äh,

das hatten wir jetzt auch schon ein paar Mal,

das kann auch Fulltext,

äh,

Volltextsuche mittlerweile ganz gut.

Mhm.

Also Redis ist ein,

äh,

Cache,

ein,

ein,

für bestimmte Dinge,

die als Key-Value kombiniert sind.

Ja,

Key-Value ist aber nicht nur das,

es kann auch ein paar andere Datenstrukturen

und,

ähm,

das liegt tatsächlich nur im Hauptspeicher

und das kann auch Volltextsuche

und das wollte ich mir auch schon immer mal angucken,

aber hab ich es,

äh,

letzter Zeit nicht geschafft,

äh,

kann sein,

dass das mittlerweile vielleicht ein bisschen sogar das erfüllt,

was ich irgendwie gerne hätte.

Ähm,

ja,

äh,

aber,

äh,

Lucid ist halt,

äh,

tatsächlich eher so drauf optimiert,

dass es auf der Platte gut aussieht.

Und,

ähm,

ja,

hm,

also da,

da hängt das irgendwie so ein bisschen hinterher

und es hängt halt auch hinterher bei solchen Sachen wie,

äh,

ähm,

also im Machine Learning Bereich läuft dieses ganze Thema immer,

äh,

unter dem Namen Learning to Rank.

Mhm.

Also sozusagen,

dass du halt,

machst halt Features,

äh,

und,

äh,

du hast halt jetzt,

die Training,

deine Trainingsdaten sehen immer so aus,

dass du,

äh,

Mengen hast von Queries

und dann

Ergebnislisten,

wo halt Leute,

also,

redaktionell annotiert ist,

wie gut waren,

wie relevant sind die Ergebnisse,

also,

wo Leute meistens auf einer Skala von 0 bis 4

oder 0 bis 3,

0 für,

ist überhaupt nicht relevant,

äh,

zu 3,

äh,

oder 4 oder 6,

ist halt super relevant für diese Anfrage,

äh,

ähm,

äh,

Ergebnislisten annotiert haben

und du dann halt hinterher,

äh,

sozusagen,

testen kannst,

wenn du jetzt

was an deiner Suchmaschine geändert hast

und

fütterst die halt mit den Queries

und guckst dir,

äh,

die Resultlisten an,

dann kannst du halt

einen Score ausrechnen.

Da gibt's dann unterschiedliche Master,

die man benutzen kann,

äh,

ja,

Mean Average Precision,

Normalized,

Cumulative Discounted Gain,

äh,

Expected Reciprocal Rank

oder was auch immer,

äh,

Ich wundere dich jetzt dabei,

mal kurz,

wie alle drei,

äh,

ja,

ja,

ja,

ja,

ja,

ja,

ja,

ja,

ja,

ja,

ja,

Aber im Grunde sind das alles Master dafür,

wie gut,

äh,

ist jetzt sozusagen die,

äh,

dieses,

diese,

äh,

dieses,

äh,

Ergebnis für die Anfrage

und,

ähm,

ja,

wenn,

wenn ich halt über viele schaffe,

besser zu sein als ein anderes,

äh,

Verfahren,

dann,

äh,

denke ich halt besser.

Dann,

dann hab ich halt ein besseres Ergebnis

und das ist ja etwas,

was sich dann auch direkt,

äh,

bemerkbar macht in User-Zufriedenheit

oder Geld oder was auch immer man halt

aus mir möchte.

Ähm,

ähm,

ähm,

und,

ähm,

naja,

äh,

ähm,

äh,

genau,

äh,

den,

normalerweise,

wenn ich jetzt so ein,

also,

Maschinen-Learning-Modelle funktionieren da wirklich besser.

Also,

das,

es gibt da schon,

äh,

es gab da schon,

gibt da schon lange auch Wettbewerbe.

Ich glaube,

ich hab mal in einer Learning-for-Rank-Challenge mitgemacht,

das war 2009 oder so,

äh,

und,

wenn man das vergleicht,

also,

was,

das ist schon über 10 Jahre her,

das ist schon klar.

Ja,

das ist krass,

ne?

Und es ist immer,

aber was ich dann,

ich dachte eigentlich,

wenn man mich damals gefragt hätte,

ähm,

was glaubst du,

wann können Suchmaschinen,

ist das so ein Standard-Feature von,

von,

von Volltext-Suchmaschinen,

hätte ich gedacht,

ja,

so in zwei Jahren oder so,

können die das alle.

Wir machen das aber immer noch nicht,

ja,

also,

das ist jetzt,

also,

das ist so ein bisschen,

hm,

naja,

aber wahrscheinlich braucht man ja da doch irgendwie auch einen Markt dafür,

und irgendwie,

äh,

äh,

und wenn es einfach keinen interessiert,

dann,

äh,

passiert das halt auch nicht,

und wenn es keinen Grund gibt,

das zu implementieren,

na,

und den gibt es halt nur bei den großen Suchmaschinen,

und die machen das wahrscheinlich,

aber,

äh,

die geben ihren Kram halt nicht raus.

Ach ja,

aber,

aber im Grunde,

so könnte man halt,

man kann halt,

äh,

also,

wenn man jetzt zum Beispiel,

also,

daher weiß ich das auch noch,

ich,

äh,

TF-IDF-Vergleich mit einem einfachen Machine Learning-Modell,

wo man halt ein paar,

äh,

Signale nimmt und die kombiniert,

und das halt dann optimiert hat,

das ist halt schon wirklich deutlich besser,

und,

ähm,

das heißt,

man kann ja relativ viel rausholen,

äh,

was die Qualität von Suchergebnissen angeht,

und das wäre eigentlich alles gar nicht so schlimm.

Na,

na ja,

ähm,

ja,

also,

falls du eine neue Suchmaschine brauchst,

dann sag dir einfach mal Bescheid.

Ja,

das ist halt dummerweise auch irgendwie nicht so ganz so super,

äh,

leistungsvoll mit Tiana,

das kann man auch nicht so an einem Wochenende machen.

Na ja,

aber,

ähm,

also,

ich glaube,

wenn man jetzt,

äh,

äh,

beispielsweise Postgres nimmt oder so,

und,

äh,

halt,

irgendwie,

Django,

und dann,

äh,

Volltextsuche drauf macht,

und dann halt,

kann man natürlich auch die eingebaute Rank-Funktion nehmen,

die halt auch was TF-IDF-Methods macht.

Und,

und Redis dazu.

Äh,

ja,

Redis,

äh,

oder man kann auch mal Redis ausprobieren,

muss ich mal,

muss ich mal testen.

Äh,

dann ist man da schon,

wenn man jetzt was,

wenn man das nochmal selber sortiert,

äh,

schon relativ weit vorne,

wenn man das dann richtig macht,

ja.

Genau.

Ja,

ich glaube,

du hast eine Sache,

irgendwas mit dem PAU,

irgendwas gesagt,

da hat,

du wolltest nur kurz drauf eingehen,

ich weiß jetzt nicht,

ob das noch wichtig ist,

ob das,

oder jeder schon vergessen hat.

Ähm,

PAU,

PAU,

irgendeine Methode,

zum Ranken,

ähm,

was ist,

äh,

die exponentielle,

der,

du meinst die Potenzmenge,

also,

du meinst,

äh,

ja,

äh,

ich glaube,

das hat,

also,

das halt,

äh,

ja,

also,

kommt drauf an,

ist halt unterschiedlich für jede,

ähm,

Seite,

oder für jede Suchmaschine,

hängt halt von,

ab welcher Anfragenstelle,

aber was man oft sieht,

ist halt,

dass eine kleine Anzahl von Anfragen,

kleine Menge von Anfragen,

Großteil,

also,

eine kleine Anzahl unterschiedlicher Anfragen,

macht dann Großteil,

Entschuldigung,

das hattest du doch tatsächlich schon einigermaßen erwähnt,

ja.

Das ist das,

äh,

genau,

genau,

das Problem hat man auch.

Ja,

ansonsten,

ich weiß nicht,

äh,

was,

äh,

oder genau,

wir hatten ja so SEO schon so ein bisschen,

aber,

äh,

da,

da würde ich auch noch gerne,

also,

was man halt da,

äh,

du sagst Content,

das klingt ja aber,

genau,

die,

das,

was sich Leute oft nicht,

äh,

klar machen,

ist halt,

ähm,

was,

was das heißt,

würdest du sagen,

jetzt geht darum,

ähm,

die optimale,

den optimalen Text zu schreiben für irgendeine,

ich glaube es,

ähm,

oder wie würdest du sagen,

was ist das,

was Content gut macht?

Also,

ich würde sagen,

Content macht gut,

dass man,

zumindest,

wenn man Google fragt,

dass man Absätze hat,

die tatsächlich mit Inhalten gefüllt sind,

die halt eine Wortdiversität,

äh,

beinhalten,

die zu dem Thema einigermaßen passt,

ja,

dass halt,

dass die Worte da,

irgendwie schon einen Kontextbezug zu haben,

dass die vielleicht auch,

bestimmte Dinge beschreiben,

dass man halt nicht immer irgendwelche Keywords benutzt,

ja,

sondern,

dass man halt tatsächlich versucht,

einen Text so darzustellen,

und Google hat es irgendwie geschafft,

so ein Maß dafür zu finden,

ob so ein Text tatsächlich,

gut ist,

ja,

in dem Sinne oder nicht,

und wenn man da halt,

ich weiß nicht,

mehrere Seiten vielleicht zu hat,

zu seinem Post,

dann wird das als guter Content irgendwie bewertet.

Ich kenne tatsächlich jetzt auch nicht im Detail,

so die Bewertung für,

was ist jetzt guter Content,

und das bewegt sich vielleicht noch ein bisschen,

und ob man das jetzt alles schön mit Bildern machen muss,

mit Alttexten und so,

ne,

dass man halt dann,

das qualitativ hochwertig implementiert hat,

also die Implementierung ist,

glaube ich,

auch nicht ganz unwichtig,

und wenn man das aber,

glaube ich,

wenigstens so tut,

als hätte man das qualitativ hochwertig implementiert,

indem man einigermaßen,

so taktisch sinnvolle Sätze,

zu einem Thema hinschreibt,

die dann auch so aussehen,

als gehören die zum Thema,

weil die halt da mit dem,

ne,

TF,

RDF,

hätte irgendwie dann zu dem Thema gut passen,

irgendwie,

gibt es dann irgendwie einen Index,

dann,

glaube ich,

ist das schon einigermaßen ansprechender Content,

zumindest für Google,

und wenn man das dann halt schafft,

da so eine,

ja,

Content-Pyramide,

wie man das so sagt,

aufzubauen,

das heißt,

zu einem Oberthema,

viele verschiedene Bereiche,

die eigentlich zu dem Oberthema gehören,

also,

vielleicht machen wir das ja mit unserem Podcast zum Beispiel,

ja,

dass wir halt tatsächlich verschiedene Themen zu Python haben,

das aber alles Python ist,

und das hat irgendwie alles einen Bezug zu Python,

dann,

kommen wir tatsächlich in dieser Content-Pyramide Python,

immer wieder ein Stück weiter oben,

nach oben,

natürlich haben wir jetzt keine Texte,

die man so analysieren kann,

per Volltextsuche,

und nachdem man,

und winken kann,

und wir haben halt nur irgendwelche Snippets,

oder Sonos,

mit denen man das tun kann,

aber,

ich glaube so,

also,

das funktioniert so ein bisschen,

so was halt Content bedeutet.

Ja,

aber das ist jetzt auch,

würde ich eher sagen,

sehr auf der,

auf einer sehr technischen,

Ebene,

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,

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 das zum Beispiel,

gut sein,

ich,

das ist auch etwas,

das kennen bestimmt viele Leute,

wenn man,

man sucht nach irgendwas,

dann ist,

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,

was wollen die mir jetzt wieder anbieten,

fünf Stockfotos,

und dann irgendwie,

die gleichen,

Buzzword,

Bingo,

Dinger,

die auf allen Seiten sind,

und ich,

scroll da eine Viertelstunde drauf rum,

und ich verstehe nicht,

was das eigentlich ist,

was,

ja,

das hat man,

hat man oft,

aber die Frage ist,

warum müssen die eigentlich,

allen die gleiche Landingpage zeigen,

das müssen die doch gar nicht,

ja,

aber das kommt dabei raus,

wenn du sagst,

okay,

ich mache eine Landingpage,

für alle die gleiche,

dann,

kriegst du halt sowas,

aber das müsste eigentlich,

gar nicht sein,

sondern das,

was sie sich überlegen müssten,

ist halt,

okay,

wenn jetzt jemand,

nach bestimmten technischen,

Geschichten sucht,

dann,

geben wir dem,

doch,

ja,

geben wir dem vielleicht,

doch eine Seite,

wo tatsächlich steht,

was wir machen,

und wenn jetzt,

irgendwie,

keine Ahnung,

eher ein Business orientierter,

User halt,

nach den,

nach den üblichen Buzzwords sucht,

oder so,

den gut,

dem kannst du ja dann vielleicht,

irgendwie,

vielleicht kriegst du den,

irgendwie,

mit Stockfotos glücklich gemacht.

Ich weiß auch nicht,

warum,

aber,

das führt überhaupt dazu,

dass wir diese Datenkrake brauchen,

wenn wir damit Geld verdienen wollen.

Das ist der Grund dafür,

warum man so sehr interessiert ist,

an dem Typen von Nutzer,

den man jetzt da vor der Kiste hat,

weil,

es geht ja eigentlich darum,

dass man den irgendwie,

emotionalisiert,

und nicht nur,

dass man dem den tollen Content teilt,

sondern,

dass man den dann,

also,

wenn wir jetzt von der ganzen Geldmaschine ausgehen,

den dazu bringt,

dass er irgendwas kaufen soll.

Wenn der schöne Kapitalismus halt so ist,

der möchte dich emotionalisieren,

und dir jetzt darfst zeigen,

was du willst.

Ja,

weil ich kann,

ich weiß nicht,

aber ich meine jetzt,

um rein aus dem Suchmaschinen-Kontext,

äh,

was man jetzt damit macht,

ist ja nochmal eine andere Frage.

Klar,

will ich eventuell Leute hinterher,

äh,

will ich da irgendwie,

die konvertieren zu was auch immer,

Umsatz, äh.

Die konvertieren zu,

das ist total schön,

wenn man von Leuten redet,

wir möchten die gerne konvertieren.

Wir möchten unsere Hörer übrigens konvertieren,

zu besseren Pythonistas.

Genau,

man muss sich halt überlegen,

was man für Ziele eigentlich erreichen will,

aber,

äh,

damit das überhaupt funktionieren kann,

damit ich überhaupt die Chance kriege,

äh,

muss ich ja irgendwie,

vielleicht,

oder macht es vielleicht in den Leuten halt,

etwas zu zeigen,

was sie dann halt auch verwenden können,

was sie verstehen können,

was relevant für sie ist,

ja,

und das passiert oft nicht,

sondern ganz oft,

ist es halt so,

alle kriegen das Gleiche,

egal,

wonach sie gesucht haben,

dabei,

das weiß ich doch,

wonach sie gesucht haben,

ich muss ja jetzt nicht irgendwie wissen,

wer das ist,

das interessiert mich gar nicht.

Ich weiß doch,

wonach die gesucht haben,

ja,

warum zeige ich denen alle das Gleiche,

das macht überhaupt keinen Sinn.

Aber,

es gibt die Vorstellung,

dass das halt so sein muss,

woher auch immer die kommt,

und,

ähm,

dass es halt dann so ein,

eben,

technisches Ding ist,

welche Farbe,

äh,

nehme ich da,

oder welche Fotos,

wie ist der Anteil von Fotos zu Text,

dass das dann irgendwie gut macht,

aber das,

wenn da nicht steht,

äh,

was mich interessiert,

dann kriege ich das nicht wieder gut gemacht,

durch irgendeine Farbe,

das ist einfach,

das,

da hast du mich schon verloren,

im Grunde.

Also,

das,

was du gerade gesagt hast,

ist,

dass der Content King eigentlich bedeuten sollte,

ich kriege genau das,

was ich möchte,

weil es so prä-invertisiert,

und gefiltert ist,

dass deine eigene Blase so gut zu dir passt,

dass du da genau das findest,

was du machst.

Das ist,

nein,

es müsste sich jemand Gedanken drüber gemacht haben,

das ist halt das Entscheidende,

jemand muss sich,

zum Beispiel,

angeguckt haben,

Also bessere Kuratierung durch den Suchalgorithmus.

Nee.

Jemand sollte sich überlegt haben,

zum Beispiel,

wir sind das Dokument nicht,

wir sind die Suchmaschine,

was Google macht,

ist nochmal ein anderes Ding,

aber,

ne,

es müsste sich jemand überlegt haben,

okay,

wonach suchen die Leute,

wenn die Leute auf der Seite landen,

wonach haben die gesucht,

ist das wirklich das,

was sie suchen?

Wenn sie danach gesucht haben,

kriegen die Seite,

wäre es nicht sinnvoll,

ihnen eine andere Seite zu zeigen?

Ja,

solche Sachen.

Das ist überhaupt so etwas,

was ich glaube,

was tatsächlich sehr sinnvoll wäre,

unter Umständen,

dass halt Unternehmen,

halt für unterschiedliche Zielgruppen,

unterschiedliche Leute,

unterschiedliche Suchanfragen,

unterschiedliche Seiten haben,

das gibt es praktisch nicht,

weil irgendwie die Vorstellung ist,

das ist wie in einer physikalischen Welt,

du hast halt ein Schaufenster,

und das ist halt für alle gleich,

aber das muss man,

ja gar nicht so machen,

unter Umständen,

also,

aber das ist halt sehr schwer zu vermitteln,

aber wenn du jetzt zum SEO gehst,

der so die Content-Strategie macht,

oder so,

dann sagt er dir vielleicht einfach,

boah,

kann das auch anders machen,

aber wenn du jetzt zum,

zu einer technischen SEO-Agentur gehst,

die dir sagt,

okay,

ich verkaufe dir so und so viel Backlinks,

dann hilft dir das,

also,

sagen wir mal so,

es gibt halt nicht nur den technischen Teil,

sondern halt auch den inhaltlichen Teil,

und der wird halt,

der inhaltliche Teil wird,

soweit ich hinweise,

üblicherweise mitbekomme,

immer sehr vernachlässigt,

vernachlässigt,

also,

die Leute kümmern sich immer um technische Details,

sondern oft auch um Sachen,

die eigentlich,

ja,

fragwürdig sind,

und,

lassen halt eine ganze Menge gute Gelegenheiten einfach so liegen,

ja,

aber,

es klingt halt,

als wäre es auch,

wenn nicht,

das zu implementieren,

ja,

ist es,

ist es tatsächlich,

also,

das ist halt auch,

das ist vielleicht auch der Grund,

warum das keiner macht,

ja,

genau,

und was die Leute,

die das halt implementieren,

auch so,

und denen halt dann die Content machen,

vielleicht auch dann nicht auf dieser technischen Seite sind,

beziehungsweise,

dass dann,

ich sage einfach mal,

relativ teuer wird,

und mal das zu implementieren,

ja,

nicht so einfach ist für die Zielgruppe,

die dann gerne ihren kleinen,

Straßenlädchen optimieren möchte,

das vielleicht auch so ein Problem ist,

ja,

aber die großen Kunden,

hast du das schon mal gesehen,

also,

dass so wirklich so diese Pages,

wirklich dann,

sich ändern,

je nach Suchanfrage,

ja,

wo,

nein,

du packst einfach,

das ist überhaupt nicht schwer,

nein,

ich sage nur,

hast du ein Beispiel,

wo du sagst,

nicht,

nicht,

nicht,

das ändert sich nach Suchanfrage,

sondern,

du hast halt unterschiedliche Pages im Google Index,

und bei unterschiedlichen Anfragen,

werden unterschiedliche Seiten gefunden,

ja,

okay,

okay,

das kannst du machen,

das ist gar kein Problem,

ja,

das habe ich,

ja,

okay,

das ist natürlich,

ja,

ja,

also,

man hittet quasi für jedes schöne Keyword-Kombination,

seine eigene Ländepage raus,

ja,

oder,

du musst nicht für jede Kombination,

aber,

du musst halt gucken,

also,

man würde damit anfangen zu gucken,

was suchen die Leute eigentlich,

welche,

mit welchen Anfragen landen sie,

oder,

auch,

wenn ich jetzt mich dafür interessiere,

was würde ich denn suchen,

und wie schaffe ich es dann,

dass ich dann auch,

dann da gerankt werde,

und,

dieser,

dieser Schritt,

das ist ja das aller,

aller simpelste,

dass man halt anfängt,

sich zu überlegen,

okay,

wie kommen Leute eigentlich hin,

das machen die meistens nicht,

sondern,

die gehen halt umgekehrt,

von der Seite aus,

die sie halt bauen,

und sagen dann,

okay,

ich habe jetzt diese Seite,

völlig unabhängig davon,

ob das irgendjemand interessiert,

oder nicht,

wie kriege ich die denn jetzt hochgerankt,

und dann packen sie da irgendwie komische Warte rein,

oder,

kaufen Links,

oder,

machen irgendwie seltsame Dinge,

ändern die Farben,

äh,

verstecken weißen Text auf weißem Hintergrund,

ja,

oder kaufen Hellhits bei Google,

oder so,

und wundern sich dann,

dass die Leute irgendwie,

wenn sie halt quasi da landen,

dann irgendwie enttäuscht sind,

also,

ja,

ja,

aber diese ganzen Tricks,

also mit den Sachen verstecken,

hinter weißem Hintergrund,

und mit den extra Keywords,

und mit den zu vielen Links,

das hat,

glaube ich,

Google mit den ganzen neuen Pads,

ja,

ja,

die sind da sehr gut,

also,

das wird alles nicht so richtig,

äh,

richtig funktionieren,

ja,

es wird sogar bestraft,

also,

du wirst tatsächlich abgerankt,

wenn du sowas machst,

also,

wenn die solche Methoden finden,

die können die identifizieren,

dann schmeißt du dich für raus,

das wird bestraft.

Würde ich jetzt,

finde ich,

weil,

weil,

ich wüsste jetzt nicht genau,

warum man das machen sollte,

weil im Grunde ist es ja,

ich würde,

wenn ich Google wäre,

das ignorieren,

weil,

nö,

also,

ich habe gehört,

dass das tatsächlich drinsteht,

ich weiß nicht,

was das für Google bedeutet,

oder was,

ja,

das ist halt nur noch Sachen gerankt,

wenn die halt diesen Content-Qualitätsding

besser machen können,

das heißt,

weil die halt auf diese Qualitätssachen

und Leute,

die halt dann versuchen,

mit Keywords das einzubinden,

die legen nicht so viel Wert

und dann würdest du sagen,

du kannst eine Regel aufstellen,

die funktioniert,

du sagst,

Leute,

die irgendwie so shady Geschichten machen

oder die halt die falsche,

sich halt von der falschen SEO-Agentur

übers Ohr haben hauen lassen,

die sind halt prinzipiell nicht gut.

Genau.

Da weiß ich nicht,

ob diese Regel wirklich stimmt,

ich würde tatsächlich das eher

dann aus Trainingsdaten lernen lassen,

ob das so ist oder nicht,

weil diese Annahme muss ja nicht richtig sein.

Es kann ja sein,

tatsächlich,

dass irgendwie der Hotdog-Stand

um die Ecke,

der eigentlich total super Hotdogs macht,

hat aber jetzt nicht so die perfekte

SEO-Auswahlkompetenz

und greift da halt ins Klo,

dann würde ich den gar nicht

dafür bestrafen wollen,

unbedingt dafür,

dass halt seine SEO-Agentur kacke ist,

sondern ich würde das ignorieren.

Okay,

aber ich weiß es nicht.

Aber ich glaube,

Google hat das tatsächlich gemacht,

das steht irgendwie in den Rules da drin,

aber ja,

sollte man vielleicht nochmal drüber nachdenken

und das ist sowieso,

also ja,

ja gut,

aber ich hoffe jetzt,

also Rest muss bewerten,

aber das haben wir,

glaube ich,

heute nicht mehr die Zeit für

und das ist auch nicht unser Thema.

Ja.

Warum,

wieso,

weshalb dann,

welche Sternchen vergeben werden sollen,

sollten,

sollten,

nicht sollten,

oder?

Ja,

aber genau,

zum Beispiel,

haben wir noch irgendwie ein großes Thema

oder sowas da drin ist,

was wir noch gar nicht angeschnitten haben

oder was irgendwie?

Ich glaube,

die großen Sachen haben wir einigermaßen durch.

Wir haben so ein bisschen erklärt,

wie es funktioniert,

was für Algorithmen dahinter stecken.

Wir sind jetzt nicht ganz so detailliert eingegangen

auf diese ganze mathematische Komponente

von den Wertserechnungen,

aber das ist,

vielleicht auch einfach hier an der Stelle too much.

Wir haben vielleicht noch wieder mal,

leider ein bisschen wenig erzählt,

wie man das in Python macht.

Also,

aus der gesagt haben,

dass es irgendwie so Pylusin und Woosh gibt,

habe ich jetzt,

und natürlich Postgres,

und dass man das in Django implementieren kann.

also,

genau,

vielleicht,

wenn man,

also,

ich finde auch gerade Python ist super geeignet dafür,

weil dann kann man diese beiden Dinge halt

total gut miteinander kombinieren.

Man kann halt zum Beispiel

irgendwie diese ganzen

Ranking-Geschichten

halt wahrscheinlich,

also,

ich denke mal,

es müsste eigentlich,

so Python ist wahrscheinlich die Sprache,

mit der das am besten geht,

wenn man halt eben diese ganze

NumPy,

SciPy,

Machine Learning-Geschichte

mit dranhängen hat.

Das heißt jetzt,

wenn man jetzt nicht unbedingt

ein Machine Learning-Modell verwendet,

aber halt diese Listen,

oder sagen wir mal so,

Vektoren von

Features halt irgendwie

auch mit Handgedenken

halt in Listen schnell zu lenken,

das geht mit Python wahrscheinlich sehr, sehr gut.

Und bei anderen Sprachen

hätte man da wahrscheinlich so ein bisschen,

na ja,

aber,

man hört sich an,

das braucht man auf jeden Fall erstmal Content,

bevor man irgendwie

eine vernünftige Suche implementiert.

Ja, tatsächlich,

das ist wahrscheinlich auch nicht so schlecht.

Weil sonst kann man ja selber aussuchen,

was dann da rauskommt.

Ja, und genau,

und das ist halt,

ich weiß jetzt gar nicht,

ob es ein großartiges anderes,

also ist das alles Web heutzutage?

Ja, ne?

Gibt es irgendwie noch eine...

Es gibt bestimmt noch irgendwelche

Studierenden-Datenbanken,

wo man dann nach

wissenschaftlichen Texten suchen kann,

oder Juristen sind sehr gerne dabei

mit irgendwelchen Volltext-Sachen,

irgendwelchen,

die man dann auch so,

die Gesetzestexten

und Urteilsverkündungsgeschichten,

was gleich ist.

Aber das wird auch alles

eher mehr oder weniger

webbasiert laufen.

Ja.

Es gibt bestimmt noch mehr,

wenn ich noch genug nachdenke.

Ja, aber es ist, glaube ich,

heutzutage eigentlich das meiste

irgendwie Web,

was man da so macht.

Ja, oder selbst wenn es irgendwie

auf Mobilgeräten ist oder so,

dann wird man wahrscheinlich

eine API-Anfrage machen

und also letztlich

wird es auch wieder Web sein.

Ja.

Genau.

Ja, ich wollte eigentlich

auch schon immer mal,

das mache ich auch vielleicht,

mal irgendwie einfach irgendwo

ein Repository anlegen

und dann mal Dinge miteinander vergleichen.

Zum Beispiel einfach

einen Standard-Korpus

von irgendwie

oder mehr

irgendwelchen Dokumenten

halt in Postgres reinhauen,

in Redis reinhauen,

in Elasticsearch reinhauen

und mal gucken,

was sind so die Unterschiede

und was macht irgendwie

großartig schmerzen

und was halt nicht so,

was ist angenehm.

Gut, dass du das jetzt

bei einer Stunde 30 gesagt hast,

wo vielleicht einige Hörer

schon eingeschlafen sind.

Aber das Versprechen

ist aufgeschrieben.

Ja, vielleicht

genau.

Dann sage ich nochmal Bescheid.

Also ich meine,

es ist auch teilweise

nicht so einfach.

Bei Django ist es so,

dass es halt,

wenn man da einfach nur das macht,

was in der Dokumentation steht,

funktioniert es auch nicht so richtig.

Das ist schon so ein bisschen

hakliger.

Ja.

Aber das muss ich mir nochmal,

muss ich mir auch nochmal genau angucken.

Ja, du fragst ja Fragen,

da stell mir die gerne

wie der PM.

Hallo,

Faisal Podcast.de.

Ich würde sagen,

wir sind aber jetzt mit der Dupe

so quasi durch

und wollten jetzt noch

ein bisschen Woche machen

und so.

Ja,

ja, ja.

Ja.

Oder hast du noch was,

was du zur Suche sagen willst?

Ja.

Gut.

Ja, also dann,

ich nehme jetzt deinen Pick weg.

Mhm.

Den musst du später machen.

Also,

Armin Ronacher

von Flask,

der Mensch,

der Creator,

hat etwas Schönes vorgestellt

und hat da einen kleinen Patch eingebaut.

Das heißt,

er nimmt einfach die Buildings

und packt da Sachen dran.

Und zwar True,

False und Null,

jeweils in kleinen,

in kleinen,

geschrieben

und setzt sie auf True,

False und Null.

Und dann kann man einfach

JSON lesen.

Ja,

beziehungsweise halt reinpasten.

Ja, genau.

Also,

halt direkt.

Pasten und das ist direkt

ein Dictionary-Objekt.

Das ist schon

relativ interessant.

Das ist schon eine

kleine Hack-Idee.

Ich wusste gar nicht,

dass man das so machen kann

und war,

sag ich mir so,

das geht.

War cool.

Der erste Kommentar

über diesen Twitter-Feed,

von dem du das gefunden hast,

ist übrigens,

I strongly recommend

not doing this.

It opens up a huge

security hole.

Ja, ja.

Ja.

Es ist völlig überbewertet.

Aber ja,

es ist sehr interessant

und lustige Sachen

sind da möglich,

wenn man was wie die

Build-Ins einfach überschreibt.

Ja.

Ja.

Also,

ich habe diesmal

tatsächlich kein Modul

zum Picken,

aber ich habe ein

wunderschönes GitHub-Repository

entdeckt,

was die Algorithms heißt.

Und da gibt es

einen Folder

mit Python.

Da gibt es quasi

alle Algorithmen,

die man so

irgendwann mal

verpastet und gebaut hat.

Die sind jetzt alle

nicht perfekt implementiert

oder in

besonders

schnell,

aber man sieht so ein bisschen,

wie das Prinzip

dahinter steckt.

Also,

ob ihr jetzt

Suchalgorithmen habt,

Suchalgorithmen,

ja,

oder Sortieralgorithmen

oder für

Webpringing

oder Matrizen

oder mathematische Sachen

und Machine Learning

oder Algebra

oder wie man

Images was macht,

wie man Hashes errechnet

oder so,

welche gut sein sollen.

So,

das steht alles drin.

Zahl,

Verschlusslogen,

Kompression.

Könnt ihr euch

alles mal angucken.

Es ist eine tolle Bibliothek.

Einfach so

Algorithms,

Python und GitHub.

Sehr interessant.

Ach so,

und was ich noch

fast ganz vergessen habe,

wir haben ja letztes Mal

über Environments gesprochen

und ich habe es tatsächlich

geschafft,

nach ein bisschen Struggle,

meine Environment,

ich habe ja eine große

Windows-Entwicklungs-Environment,

umzustellen

auf PyEnf und Poetry

und habe das auch

auf GitHub mal dokumentiert,

wie das denn eigentlich geht.

Falls ihr das irgendwie

vorhabt,

ich empfehle,

wenn ihr das mit Poetry

machen wollt,

schmeißt alles Python,

was ihr schon drauf habt,

einmal weg,

weil es sonst

Hakeligkeiten mit

auf dem Pfad geben kann.

Dann müsst ihr vielleicht

auch einmal komplett

aufräumen und putzen,

weil,

ja,

die Dementierung

PyEnf,

Win,

das so ein bisschen

komisch löst,

die wird eure,

ja,

Windows-Libraries

mit einem grafischen

Installer dann installieren,

also die Python-Version,

das ist ein bisschen

anstrengend,

aber dann passiert

das alles automatisch

und ihr habt diesen

ganzen Struggle nicht

und dann könnt ihr

Poetry und PyEnf

wunderbar kombinieren,

auch mit,

ja,

eurer PowerShell.

Es geht aber leider

nicht so gut mit Toko,

also nehmt nicht

die Toko-Version,

sondern versucht das

auf das GitHub-Repository

zu ziehen.

Kann ich empfehlen.

Ich habe da auch

ein paar Skripte geschrieben,

die das automatischer

machen können.

Wollte ich nochmal

so kurz für die Menschen,

die tatsächlich noch

mit Windows arbeiten.

Ich habe in

NixOS reingeschaut,

das gefällt mir recht gut.

Ach, okay,

ja,

das ist auch eine

sehr coole Idee,

ja.

Ja,

dann bin ich aber noch

dabei,

meine Python-Implementierung

zu bauen,

mal gucken,

ob ich das so

weiterführe.

Ja,

aber das hat relativ

wenig mit Suchmaschinen

zu tun,

aber das war so

für den Pick der Woche.

Haben wir irgendwas

vergessen?

Ja,

mir ist jetzt doch

eingefallen,

also in dem Moment,

wo ich gesagt habe,

so haben wir nicht

noch irgendwas vergessen.

Ich hatte schon das Gefühl,

wir haben irgendwas vergessen,

ja,

haben wir auch,

aber egal.

Und zwar gibt es halt noch

einen ganz,

nicht unerheblich großen Teil

Volltext-Suche,

wo es nicht um Dinge geht,

die jetzt,

ja,

so traditionellerweise da so,

also,

dass man Queries hat,

die man so gut in Tokens

zerlegen kann,

oder wo man halt

Tokens sucht,

sondern

solche Sachen wie

Autocomplete in der Suchbox.

Ja,

also,

okay.

Oder wo man halt einfach

nur ein paar Buchstaben hat

und möchte das halt finden.

Oder man möchte halt

irgendwie einen Teil

von einem Wort finden,

irgendwo drin.

Und das ist halt nochmal

so ein bisschen

ein anderes Problem

und braucht halt ein bisschen

andere Datenstrukturen dafür.

Und,

ja,

das,

vielleicht machen wir das

auch einfach mal

in anderen Dingen.

Okay,

machen wir dieses Fass

nicht nochmal auf.

aber das hätte eigentlich

ja eventuell auch noch

dazu gehört,

weil das ist auch

ein nicht unerheblich großer Teil,

der halt auch im Grunde,

ja,

das ist ja auch Volltextsuche,

das ist nur ein bisschen anders.

Ja,

okay.

Naja.

Ja,

dann das nächste Mal.

Also,

wenn ihr Fragen dazu habt,

dann gerne wieder an

highlightpricemodcast.de,

das haben wir schon

gerade gesagt.

Mögt uns und folgt uns

auf allen Dingen,

die wir so posten.

Schreibt uns,

freut uns auf euch,

bleibt uns gewogen,

hört uns immer morgens,

mittags,

nachts,

abends.

Und,

ja,

bis zum nächsten Mal.

Jo,

alles klar.

Tschüss.