Transkript: Suchmaschinen

· Zurück zur Episode

Vollständiges Transkript der Episode. Zeitstempel beziehen sich auf die Audiowiedergabe.

Dominik

Ja, hallo liebe Hörerinnen und Hörer.

Dominik

Willkommen zum Python Podcast in der heute 18.

Dominik

Episode.

Dominik

Heute geht es um die Suche.

Dominik

Hier ist der Donik und neben ist der Jochen.

Jochen

Ja, halli, hallo.

Dominik

Wir sind wieder auf der Raumschiffbrücke heute.

Genau.

Dominik

Erneut.

Schön hier.

Jochen

Ja.

Jochen

Genau, Volltextssuche, um es genau zu sagen.

Dominik

Ja, ah oh, Volltextsuche, ja.

Jochen

Ja.

Jochen

Aber wollen wir das eigentlich oder ich meine, wir könnten einfach ganz normal starten, so mit News und Dings.

Dominik

Ja, ja, genau.

Dominik

Ich würde auch sagen, wir machen jetzt wie immer unsere kleine Einleitung.

Dominik

Vielen Dank an unsere zahlreichen Hörer.

Dominik

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

Dominik

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.

Dominik

Also wenn ihr Fragen habt, Lob, Anregungen, Kommentare, hallo at python Podcast.de, schickt uns einfach eine Mail oder kommentiert fleißig auf unserer Seite.

Dominik

Ja, News aus der Szene.

Dominik

Heute ist der Erscheinungstag von Python 382.

Dominik

Angeblich.

Dominik

Ist noch nicht so nicht raus.

Dominik

Wir haben gerade abends, es ist dunkel.

Jochen

Genau.

Dominik

Heute ist Rosenmontag übrigens auch.

Jochen

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

Dominik

Die sind unbeschadet heimgekommen, ja.

Jochen

Nee, ich war auch heute einer der wenigen Leute, die irgendwie im Brot saßen und so, es war sehr angenehm, haben ein bisschen was geschafft gekriegt.

Dominik

Ja, und da da eben immer, wenn du auf die Straße gehst, so aussieht, als wärst du schon verkleidet, ist das auch gar nicht groß aufgefallen.

Ja, ja, ja.

Jochen

Horrorclown.

Jochen

Kann ich empfehlen.

Dominik

Sehr gut.

Dominik

Ja, wir machen heute Volltext-Suche.

Dominik

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

Dominik

Hatten wir noch was Schönes?

Jochen

Tatsächlich glaube ich eigentlich nicht.

Dominik

War gar nicht so viel Jose, ne?

Dominik

Europhizen war im Moment hin.

Jochen

Ja, war nicht so.

Dominik

Gehst du hin zur Europhizen?

Ja, ja, ja, ja.

Dominik

Ja, war schön, cool.

Jochen

Wir müssen das nur noch irgendwie mit Kindergarten und so geklären.

Jochen

Den ja auch irgendwie Betriebsferien und so, aber ich eigentlich schon, ja.

Ja, das muss alleine.

Dominik

Ich habe mir schon eine Wohnung organisiert.

Dominik

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

Dominik

Ja, was gab's noch?

Dominik

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

Dominik

Das ist der Hauptdev, der Entwickler von Flas.

Jochen

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

Dominik

Ach, das sollst du picken.

Ja.

Dominik

Ach, das ist ein Modul.

Nee, aber als.

Dominik

Ich dachte, wir picken Module, Jochen.

Jochen

Ja, heute nicht.

Jochen

Oh Gott, jetzt alles dich hintereinander.

Ja, okay, dann gleich.

Dominik

Jetzt entwickeln wir keine Module, dann machen wir das am Ende.

Jochen

Ja.

Jochen

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 Standardbibliothek uns vornehmen.

Dominik

Ja, gute Idee.

Dominik

Und das nehmen wir Parslib.

Jochen

Parslib, ja.

Jochen

Genau.

Jochen

Das immer wieder, wenn ich halt irgendwie in Code herumnavigiere und sehe dann irgendwo so Import US und dann halt OS Pass und so und dann machen Leute da Dinge, dann denke ich mir so, ach, es geht so viel schöner mit Parslib.

Dominik

Also vielleicht nochmal kurz, was Parslip ist.

Dominik

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

Jochen

Das ist ein Modul aus der Standardbibliothek, ich weiß jetzt gar nicht.

Jochen

Nee, das ist kein Wrapper um OSPath.

Jochen

Nö, nö, das ist halt auch so ein bisschen, manchmal ist so ein bisschen unübersichtlich.

Jochen

Es gibt einige Module in der Standardbibliothek, die halt so ein bisschen das gleiche machen.

Jochen

Unter anderem halt eben OS Path und dann Shell Utils, also SH-Util macht auch so ein bisschen das gleiche, aber so ein bisschen eine andere Geschmacksrichtung.

Jochen

Parselib macht ja jetzt auch nochmal das gleiche, aber auch wieder ein bisschen anders.

Jochen

Ach ja.

Jochen

Aber im Grunde denke ich, wenn man jetzt mit Pfaden irgendwie Dinge macht, dann ist Passlib das, was man eigentlich haben will.

Jochen

Und das ist auch so richtig, ich glaube, das ist auch erst seit Python 3.4 oder so drin.

Jochen

Ja.

Jochen

Und auch, aber auch erst seit 3.6 so richtig schön.

Jochen

Oder 3.7 sind auch nochmal interessante Dinge dazugekommen, glaube ich, ist Mount dazugekommen in 3.7.

Jochen

Also nur in aktuelleren Python 3-Versionen.

Dominik

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 zu anzeigen oder Content anzeigen, gucken, ist es ein Verzeichnis, das ist kein Verzeichnis, eine Datei.

Ja genau, das ist so.

Jochen

Das Hauptfeature finde ich, dass man damit halt relativ einfach Pfade so hinschreiben kann, ohne jetzt irgendwie viel Boilerplate Code außen rumschreiben zu müssen.

Jochen

Wenn man jetzt aufpassen, joinen und dann die Liste, das ist halt immer so ein bisschen, und jetzt kann man halt einfach, man schreibt halt einen Slash und dann macht dieser Operator sozusagen eine Verkettung der Namen, die man da.

Dominik

Ja, soll man es aus dem Dateisystem eigentlich auch kennen und das genau.

Jochen

Dann sieht das halt im Code fast genauso aus, als würde man es auf die Shell schreiben und das natürlich schon deutlich kompakter und sieht einfach, ja, man sieht, was passiert.

Jochen

Das ist ein tolles Ding, aber halt auch solche Sachen wie so Convenience-Funktionen für Sachen, die man halt dauernd braucht.

Jochen

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

Jochen

Also ohne irgendwie MP4 hinten dran oder MP4.

Oder auch mit, das geht auch.

Jochen

Oder mit oder nur das Suffix oder so.

Jochen

Solche Dinge braucht man ja dauernd.

Jochen

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

Dominik

Ja, das fand ich auch angewendet.

Jochen

Das ist halt total nett, genau.

Dominik

Ich muss gestehen, hatte ich mit Pass angefangen, gab es das schon und deswegen habe ich OS-Pass nur ab und zu mal angesehen und gesagt, ist das hässlich dann gesehen.

Dominik

Ach ja, okay, das gibt es jetzt Parslip.

Jochen

Ja, ja, ja, ja.

Jochen

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

Dominik

Auch ganz oft in Django ist das auch ganz oft drin in den Settings oder sowas, ja.

Dominik

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

Dominik

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

Dominik

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

Jochen

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-Pass gemacht hat und jetzt wie man es mit Parslib machen kann.

Jochen

Tabelle und da findet man dann meistens schon die Funktion, die man sucht.

Dominik

Stellen wir euch nicht schon uns.

Ja, genau.

Jochen

Also genau, damit haben wir das tatsächlich mal gemacht, was wird immer noch geregelt.

Dominik

Also wir wollen jetzt tatsächlich das Einzeltreifen auf der Klein hat.

Dominik

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 Picks haben wollt oder erstmal direkt das Thema, bevor wir irgendwas über News erzählen.

Dominik

Ja, aber trotzdem, dann machen wir Volltextsuche weiter und ich werde dich löchern damit mit.

Jochen

Oder wollen wir noch ganz kurz ein Meta-Ding, also ich überlege gerade, weil mich hatte diese, da gab es eine Mail, die wir fragen wollen, ob wir nicht Podcast, ob wir nicht mehr Dinge erklären könnten.

Ach so, stimmt.

Jochen

Ja, ich kann das durchaus verstehen.

Jochen

Also es ist halt viele Sachen, die man einfach so vor sich hin redet, nicht drüber nachdenkt, die zu erklären, dann wird es halt schnell unverständlich.

Jochen

Aber auf der anderen Seite ist halt, glaube ich, schwierig.

Jochen

Ich glaube, das ist.

Ja, so ein Trade-Off.

Dominik

Einige Menschen, die kennen das halt schon alles und wenn man dann jeden Schnipsel erzählt, ist vielleicht uninteressant.

Jochen

Dann wird es für die uninteressanter, ne?

Jochen

Und die Frage, an wem wendet man sich dann irgendwie.

Dominik

Wie Einsteiger wollen wir das Ganze machen?

Dominik

Ja, das ist gar nicht so einfach.

Dominik

Ich glaube, bestimmte Sachen muss man vielleicht selber nachgucken und man kann uns immer fragen, wenn man irgendwas nicht versteht.

Dominik

Wir erklären das immer gerne nochmal und nehmen das auf in einer der Folgen.

Dominik

Ich glaube, das ist vielleicht eine gute Idee.

Dominik

Und ja, also tatsächlich, wenn uns irgendwas auffällt, versuchen wir es so tief wie möglich zu erklären.

Jochen

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.

Jochen

Weil ich würde sagen, das ist ja eigentlich das Tolle an.

Jochen

Aber ich komme drauf, weil letzte, ich höre ja auch noch viele andere Podcasts, ich höre zum Beispiel Philosophische Radio auf WDR5 oder die Radio Bissen.

Jochen

Ich weiß jetzt gar nicht, auf welchem Sender, ich weiß ja nur, was Podcast geht.

Dominik

Ich höre einen tollen Hockey-Podcast, Shout Hand News, falls jemand Eishockey macht.

Jochen

Genau, und die sind der Meinung, dass sie da auch irgendwie Podcasts machen und man sagen, sie können das.

Jochen

Aber das ist kein Podcast, sondern das hat halt irgendwie eine feste Zeitbegrenzung, ja.

Jochen

Und dann am Schluss fangen wir auch um an, so das müssen wir jetzt noch schnell zu Ende.

Jochen

Oder jetzt sind wir ja schon fast am Ende mit der Zeit, wo man sich denkt so, ja, warum eigentlich?

Jochen

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

Jochen

Also da ist halt ein großer Unterschied und dann ist er auch ein Unterschied, dass die machen das nämlich so.

Jochen

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.

Dominik

Die können die nicht irgendwie veröffentlichen auf der Seite, wann wir nächste Podcast-Folge aufnehmen, dann sind Anrufer zugelassen.

Jochen

Genau, das macht natürlich.

Jochen

Ich verstehe natürlich, dass es bei der Live-Sendung den 13 nochmal erhöht, ja, oder wenn man halt irgendwie auf Twitter nebenher drüber lässtern kann, was die gerade wieder von uns erzählen, das ist schon erhöht den Spaßfaktor deutlich.

Jochen

Aber ich weiß nicht, ich glaube, das ist was anderes, als das ist dann halt eher so Radio oder Fernsehen oder aber nicht eben nicht Podcast, weil für mich Podcast ist eher so oder das, was ich daran mag, ist halt etwas, was man eben in diesen Massenmedienkontexten halt nicht kriegt.

Jochen

Nämlich zum Beispiel, was mich eben bei so einem Thema wie jetzt Philosoph oder so eigentlich interessieren würde, wäre genau das, was wir versuchen jetzt im Bereich Python jetzt hier zu machen.

Jochen

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.

Jochen

Und das gibt es halt für sowas wie Philosophie nicht.

Jochen

Sondern da hast du halt immer einen Moderator und dann halt vielleicht einen Studiorest oder so.

Jochen

Oh, es

Dominik

gibt ja so einen philosophischen Zirkel in der Stadt.

Jochen

Ja, vielleicht müsste man da, vielleicht müssen wir sie mal dahin gehen, keine Ahnung.

Jochen

Aber und dann wird das irgendwie aufbereitet und dann ist da irgendwie so ein Konzept hin und dann will man bestimmte Punkte abarbeiten.

Jochen

Aber ich finde das halt eigentlich überhaupt nicht interessant.

Jochen

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.

Jochen

Und sie geben sich halt auch mal sehr viel Mühe, das dann irgendwie so zu verpacken, dass es halt möglichst viele Leute erreichen kann.

Jochen

Was ja auch nichts Schlechtes sein muss, aber ich meine, im Grunde, wenn man in einem Massenmedium ist, dann ist das natürlich natürlich das Ziel, irgendwie möglichst viele Leute zu erreichen.

Jochen

Sonst müsste ich da nicht das irgendwie über Radiowellen irgendwie nach draußen senden.

Jochen

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

Jochen

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

Dominik

Also wir haben jetzt einen kleinen Exkurs, Jochen redet Nika über Podcast.

Jochen

Sorry, ist ja gerade nur so, weil ich meine, man kann ja auch auf andere Dinge optimieren, ja.

Jochen

Mal so zum Beispiel, wie nützlich ist das für die Leute, die das zuhören?

Jochen

Es können ja weniger Leute hören, aber für die kann das ja nützlicher sein, als wenn, aber das geht jetzt eben bei einer Radiosendung nicht.

Jochen

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.

Dominik

Ja, also wir machen ja einen Podcast und ich hoffe, dass alle unsere Hörer auch tatsächlich wegen Python und hier sind und vielleicht auch, weil sie Lust drauf haben oder warum auch immer.

Dominik

Also keine Ahnung, kann auch sein, dass ihr unsere Stimme so schön findet.

Zum Einschlafen.

Dominik

Ja, das ist eigentlich gar nicht so schlechte Idee.

Dominik

Nur nicht beim Autofahren und Eschlafen kommen.

Dominik

Aber naja.

Jochen

Aber ja, also ich finde, das ist halt etwas, was oder überhaupt bei Internetgeschichten finde ich das immer super, dass man das ja eigentlich tun kann mal.

Jochen

Man kann ja jetzt einfach sagen, okay, ist mir egal, muss es nicht für jeden relevant, sondern für nur ein paar Leute.

Dominik

Ja, aber ich glaube, weil wir eigentlich mit der Frage eingestiegen sind, wie viel wir tief erklären.

Dominik

Also erklärt uns doch mal gerne mit, wie viel ihr denn erklärt haben wollt, ob euch das zu viel Erklärung ist, zu wenig Erklärung ist.

Dominik

Und ja, ich glaube, wenn ihr Begriffsfragen habt, wissen wollt, was CSS ist, Cascading Style Sheets im Übrigen, da war eine Frage, dann erklären wir euch das gerne nochmal oder ihr schaut das dann kurz nach, also wie man dann das Internet betrachtbar macht.

Dominik

Ja, Jochen, aber jetzt hast du so viel über Meta geredet, dass unsere Absprungquote wahrscheinlich wieder in Höhen geschnallt ist.

Dominik

Wir fangen jetzt an mit Volltextsuche.

Jochen

Ja, Volltextsuche, voll gut.

Dominik

Also was ist das überhaupt, weil Volltextsuche?

Dominik

Also wir wollen ja ganz Basis anfangen und erklären, was macht eine Volltext oder warum heißt es Volltext und was es daran suche?

Dominik

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?

Jochen

Ja, nee, also ich meine, das ist auch ein Art Suchproblem, sozusagen, wenn man versucht, in einem Text irgendwas zu finden.

Aber Volltextsuche willest du da viele Texte finden.

Jochen

Ja, also der entscheidende Unterschied ist eigentlich, dass man halt Dokumente hat bei einer Vollteilssuchmaschine.

Indizierbare Dokumente, also deren Inhalt du kennst und dann möchtest du durch eine Masse von Dokumenten bestimmte Stichworte suchen.

Jochen

Ja, also man hat eine Anfrage oder eine Query und dann möchte man halt die Sachen finden, die da relevant sind.

Dominik

Playpad, hast du benutzt, damit du deine Hausarbeit nicht zweimal schreiben musst oder einfach die nehmen kannst, die du findest.

Jochen

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

Dominik

Ein Glossar.

Jochen

Nee, nee, nicht Glossar, erklärt ja die Begriff, aber einen Index tatsächlich gibt es oft in Büchern.

Dominik

Ja, okay, also geht es ja noch welchem Hit, welche Leile.

Jochen

Das ist einfach sozusagen eine Liste der Wörter und dann auf welchen Seiten die Wörter vorkommen.

Jochen

Also das ist immer das Wort.

Dominik

Ich habe das sogar einmal in der Kombination gesehen, glaube ich, also ein Glossar kombiniert mit der Erklärung und dann die Hinweise, wo es auftaucht.

Dominik

Sehr schöne Sache.

Jochen

Kann man wahrscheinlich auch machen, aber genau, und dann hast du halt eine komma separierte Liste der Seiten, auf denen das vorkommt.

Jochen

Du hast jetzt auf den Volltextsuche-Dingswertungsfall übertragen, wäre das halt so, dass die Seiten in dem Buch wären halt die Dokumente, die initiiert werden und der Index in dem Buch ist tatsächlich dann halt so etwas wie ein Volltextsuchindex, den man auch sehr ähnlich zu dem, was man dann tatsächlich auch verwendet.

Dominik

Und was hat das denn mit Python zu tun, Jochen?

Jochen

Ja, also das ist eine gute Frage.

Jochen

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.

Jochen

Meiner Ansicht nach implementiert dann viel zu wenig Suchmaschinen, sind viel zu wenig Volltext-Suchmaschinen in Python implementiert.

Jochen

Schnüff, aber so ist es halt.

Jochen

Aber zumindest, dass man die irgendwie ansprechen muss und dann da irgendwas mit den Ergebnissen macht, das hat man ja relativ oft.

Welche hatten denn Suchmaschinen?

Dominik

Ich muss erstmal Beispiele geben für Volltext-Suchmaschinen, die man vielleicht kennt oder auch nicht, oder?

Jochen

Also da gibt es halt unterschiedliche, ja, es gibt natürlich die große Google, die Alvisnimmülhalte, die Alter kennen, vielleicht mit den entsprechenden Vorgängern, so was ich nicht, Excite, Alta Vista, Hotbot.

Dominik

Ach, Alta Vista, das waren noch Zeiten.

Ja.

Jochen

Und das sind halt schon relativ fortgeschrittene Dinge.

Jochen

Also gerade Google ist halt, oder auch die anderen modernen, die es halt gibt, Bing, oder was gibt es da noch?

Jochen

Gibt es eigentlich.

Dominik

Du hast ein Microsoft von der Band erneut.

Dominik

Die haben aber immer noch kein Contract leider bekommen.

Jochen

Oder A9 von Amazon, wo auch einer der Experten-Tode, Udi Member hat da lange.

Jochen

Also ja, also die Dinger sind halt relativ fortgeschritten und haben halt, sind halt relativ einfach gestartet.

Jochen

Es gibt das Ganze jetzt auch als Software, sozusagen Open Source Software, die man irgendwie verwenden kann oder halt auch es gibt kommerzielle Software, die das macht.

Jochen

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.

Jochen

Also das ist, denke ich, ein ganz häufiger Anwendungsfall, dass du halt eine Webseite hast und möchtest halt eine Suchfunktionalität anbieten.

Jochen

Und ja, dann muss es halt irgendwie irgendwo passieren.

Jochen

Und das, was es da, das, was da sozusagen der Platzsearch ist, ist eine Java-Bibliothek namens Lucine.

Jochen

Ja.

Jochen

Das ist von Doug Cutting geschrieben worden.

Jochen

Der hat damit angefangen, 1997 oder so, der hat irgendwie mal gearbeitet bei Excite, meine ich.

Jochen

Und hat dann irgendwann hat er oder so, da habe ich irgendwo mal im Talk gehört, hat er so, ja, so, das ist also 97, da hat er so das Gefühl, die Dotcom-Bubble, die platzt jetzt demnächst.

Jochen

So, hat noch ein bisschen gedauert, aber da war gar nicht so schlecht.

Jochen

Und man hat sich dann sozusagen einen Teil der Woche, ich weiß nicht, ein oder zwei Tage Homeoffice oder auf Homeoffice setzen lassen und dann an eben der neuen Suchmaschine gebastelt.

Jochen

Und als dann Exite tatsächlich irgendwie so ein bisschen die Ohren angelegt hat, hat er das halt dann Open Source, äh Open Source Geschichte überführt, auch da ohne groß drüber nachzudenken, was man da jetzt macht.

Jochen

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

Jochen

Das war aber dann nicht so cool.

Jochen

Leute haben sich beschwert, dass sie das dann nicht so richtig verwenden können und so.

Jochen

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.

Jochen

Und dabei, man das dann noch nie gemacht hat, weiß man ja nicht genau, was man da alles machen muss.

Jochen

Mailinglisten und wie organisiert man diese ganze Entwicklungsgeschichte überhaupt.

Jochen

Und ist dann irgendwie mit dem Lucinen-Projekt dann da unter diesen Apache-Schirm der Apache Software Foundation gekommen, hat dann auch die Apache License übernommen und er meinte, seitdem hat sich nie wieder jemand über die Lizenz beschwert und es funktioniert.

Jochen

Also es ist halt eine sehr liberale Lizenz, so PC-artig, MIT-artig.

Dominik

Ja, Lizenzen müssen wir ja auch nochmal neu entkennen.

Ja.

Jochen

Aber im Grunde kann man dann mehr oder weniger machen, was man will und ja, halt auch im kommerziellen Kontext verwenden oder in Software, die man halt irgendwo hinschippt.

Jochen

Das ging jetzt mit der GPL zum Beispiel eher nicht.

Jochen

Ja.

Jochen

Und dann ist diese Bibliothek relativ erfolgreich geworden.

Jochen

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.

Jochen

Also die beiden größten Dinger, die man heute so kennt, sind halt Solar und Elasticsearch.

Jochen

Ja, und das Spice-Lucine.

Jochen

Man kann das auch aus Python heraus direkt verwenden mit PyLucine.

Jochen

Aber das ist so ein bisschen eklig.

Jochen

Also das ist halt das in das macht halt direkt eine Anbindung an Java und.

Dominik

Hört sich echt komisch an.

Jochen

Ja, also geht schon, aber will man vielleicht auch nicht verwenden.

Jochen

Eher, ist wahrscheinlich die richtige Art, wo man das dann trennt, irgendwie eine API oder so.

Jochen

Und das machen Solar und Elasticsearch auch so.

Jochen

Also meistens hast du dann Elastic Search oder Solar, vielleicht SolarCloud auf irgendeinem Cluster laufen oder was nicht.

Jochen

Und auf dein Hadoop-Cluster am besten.

Jochen

Und dann connectest du dahin und stellst da deine Suchqueries an Fragen.

Jochen

Ja, genau, so sieht es halt irgendwie momentan aus.

Jochen

Aber das ist natürlich, also okay, es ist nicht, es ist das Verbreiteste, das, was irgendwie alle die meisten Leute verwenden, ist aber nicht das Einzige.

Jochen

Es gibt noch eine Menge andere Dinge und andere Software, die das halt auch kann.

Jochen

Andere Open Source Supermaschinen werden sowas wie, es gibt noch Xapien, obwohl ich weiß nicht, ob es das tatsächlich noch gibt.

Jochen

Das war irgendwas in C<unk>, glaube ich, nicht mehr relevant.

Jochen

Sphinx gibt es noch.

Jochen

Das ist insofern ganz halbwegs relevant, noch, weil das halt eine enge Verbindung zu MySQL hat.

Jochen

Und da gibt es halt irgendwie eine.

Dominik

Heißt das MariaDB.

Jochen

Oder genau, wenn man heute MySQL sagt, dann meint man eigentlich mal MariaDB.

Jochen

Und da gibt es halt irgendwie relativ ausgefuchste Mechanismen, wie man das halt ineinander integriert und halt, wenn man die eingebaute Volltextsuche von MySQL nicht mehr verwenden will oder wenn man da rausgewachsen ist, dann kann man irgendwie relativ leicht Zwings dran bauen.

Jochen

Ja, ähm.

Dominik

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

Dominik

Also wenn du sagst, man packt das jetzt einfach so mal eben kurz in einen Hadoop, äh, klammer auf was bitte ist denn das?

Dominik

Knapp da rein.

Dominik

Und was das dann überhaupt, wo die Dokumente liegen und wie das dann überhaupt so richtig funktioniert und so.

Ja.

Jochen

Ich überlege gerade, ach genau, es gibt eine in Python implementierte Volltext-Suchmaschine namens Wuchsch.

Jochen

Whoosch, die sich auch sehr stark an Lysine irgendwie so von der Struktur intern anlehnt, aber ist halt in Python geschrieben, ist nicht so schnell, alles ein bisschen langsam.

Jochen

Aber kann man auch mal benutzen, ist irgendwie ganz nett.

Jochen

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.

Jochen

Ja, also wenn jemand noch was einfällt.

Jochen

Und dann gibt es halt noch Volltextsuchfeatures in den meisten Datenbanken.

Jochen

Und das natürlich auch nett, weil meistens hat man ja eh die Daten, in denen man irgendwas sucht, sowieso schon in der Datenbank liegen.

Jochen

Und eben, wenn man sowas wie Elasticsearch, Solar oder so, dann muss man halt irgendwie die Daten aus der Datenbank da reinkriegen.

Jochen

Und wenn man jetzt ein Suchergebnis bekommt von denen, dann muss man irgendwie wieder zur Datenbank und dann nochmal wieder andere Informationen rausholen.

Jochen

Das ist so ein bisschen umständlich.

Jochen

Das ist ja eigentlich schön, wenn das direkt in der Datenbank drin wäre.

Jochen

Und ja, die meisten Datenbanken bieten da halt auch Geschichten, wobei das halt unterschiedlich fertig oder unterschiedlich komplettes Featureset ist.

Jochen

Postgres hat relativ viel Volltext-Fähigkeiten.

Jochen

SQLite hat relativ viel, das ist auch sehr, sehr interessant.

Jochen

MySQL ist nicht so, hat nicht so ganz so viele.

Jochen

Aber so ein bisschen was geht auf jeden Fall auch.

Jochen

Ja, und das ist auch, also ehrlich gesagt, das ist was, was ich präferieren würde momentan, also wenn man gerade wenn man anfängt, dann lässt man das eher die Datenbank machen.

Jochen

Dann macht man nicht, fängt man nicht damit an, direkt irgendwie einen Elasticsearch daneben zu stellen.

Dominik

Dann macht man das auf welcher Größe oder welches Suchvolumen geht es da oder

Jochen

das kann man so schwer beantworten.

Jochen

Also, aber

Dominik

weil meine Postgres jetzt auf 0, nix mehr die Antwort auf meine Frage geben kann.

Dominik

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 Luzin drauf springen, damit es da noch einigermaßen performant Ergebnisse rausbekommt.

Jochen

Nee, das ist auch, also ich würde eher sowas sagen wie, es hängt halt von der Maschine auch ab.

Jochen

Also wenn, sobald was halt in Postgres relativ schnell relativ groß wird, sind halt die Indizes.

Jochen

Also super optimal sind die halt nicht.

Jochen

Also, da ist schon einiges optimiert, aber die werden halt relativ schnell relativ groß.

Jochen

Und wenn die zum Beispiel so groß sind, dass sie nicht mehr in Hauptspeicher passen, dann hat man ein Problem.

Jochen

Und das geht wahrscheinlich dann mit Lisiden oder beziehungsweise halt Solar Cloud oder Elasticsearch oder so dann besser.

Jochen

Aber da ist man schon bei wirklich vielen, vielen Dokumenten wahrscheinlich.

Dominik

Wie viele Hauptspeicher hat man denn dann, den man braucht für wie viel Dokumentengröße?

Dominik

Hast du da so Werte?

Jochen

Nee, weiß ich nicht.

Jochen

Aber keine Ahnung, kann sein, dass kommen wir halt auch darauf an, wie groß die Dokumente sind.

Jochen

Aber ich meine, heutige Datenbanken 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 Dokument hast, also ist es, glaube ich, nicht so oft, dass einem das sofort auf den Fuß fällt, sondern wenn man das Problem bekommt, dann hat man.

Dominik

Das heißt, mit den neuen Maschinen, wenn man da eine größere Maschine hinstellt, sollte das auch mit dem Indexieren von Postgres dann mit 64 Gig über mehrere Millionen Dokumente aufhalten.

Jochen

Ja, ja, ja, ja, auf jeden Fall, auf jeden Fall.

Jochen

Und ja, genau, es kann auch einen interessanten, es gibt noch einigen Sombo DB oder so heißt das, glaube ich.

Jochen

Ich habe es noch nicht verwendet.

Jochen

Da kann man dann auch das direkt in die Datenbank integrieren, sodass man halt nur die Anfrage an die Datenbank stellt und die dann halt, weil man ja kann auch Plugins für Postgres und so schreiben, die macht dann halt eine Anfrage auf irgendwie ein Elasticsearch Cluster oder so.

Jochen

Sodass man halt von der Applikationsseite aus gar nicht merkt, dass man inzwischen die Suchfunktionalität halt irgendwie woanders hin ausgelagert hat, was natürlich auch ganz praktisch wäre.

Jochen

Also es gibt ja eine ganze Menge Dinge, die man tun kann, aber ich sag mal, für den Hausgebrauch und für die allermeisten Webseiten da draußen dürfte das, was in den Datenbanken eingebaut ist, schon eher reichen.

Jochen

Und ich denke auch nicht, dass das wirklich das ist, wo die meisten Probleme kriegen.

Jochen

Die meisten Leute kriegen nicht sofort Probleme mit der Skalierung, sondern eher bei so grundsätzlichen Fragestellungen.

Jochen

Und das ist auch, also das sind halt.

Dominik

Was sind grundsätzliche Fragestellen?

Jochen

Ja, also zum Beispiel, wie macht man das jetzt eigentlich, wenn man eine Suchmaske irgendwie auf einer Webseite hat?

Jochen

Was ist eigentlich, wie geht das mit der Relevanz?

Jochen

Also wie kriege ich das eigentlich raus, ob da irgendwie gute Ergebnisse kommen, wie mache ich das?

Jochen

Und da ist auch leider die Antwort, es hängt davon ab und es ist je nach Anwendungsfall sehr unterschiedlich.

Dominik

Okay, jetzt wird es interessant.

Dominik

Also ich möchte suchen, auch Ranken, ja.

Dominik

Und das heißt, die Treffer Quote erhöhen.

Dominik

Die Wahrscheinlichkeit, dass das Dokument dem entspricht, was ich gerade haben möchte.

Jochen

Genau, wenn Leute da irgendwas eingeben, irgendeine Query eingeben, dann möchtest du, dass sie halt normalerweise, oder dass sie halt in möglichst vielen Fällen halt irgendwie relevante Ergebnisse haben.

Dominik

Ja, okay.

Dominik

Und wie das funktioniert, ist natürlich jetzt sehr spannend.

Ja.

Jochen

Also, das haben wir, glaube ich, noch gar nicht.

Jochen

Also wie so ein Index funktioniert, ist halt im Grunde, wenn ich mir vorstelle, das wäre jetzt eine, ich hätte jetzt eben dieses Buch mit dem Index hinten drin und ich würde jetzt wissen wollen, okay, wo kommt denn das Wort, was könnte ich denn für ein Wort nehmen?

Jochen

Keyword.

Keyword und Python.

Jochen

Und Python, ja, wo kommt denn das überall vor?

Jochen

Und ich hätte gerne alle Seiten, auf denen das vorkommt.

Jochen

Dann gehe ich einfach in den Index, nehme halt, suche halt das Wort Keyword, nehme die Seiten, die Nummern, packe das in ein Set und nehme das gleiche Set der Seiten von Python.

Jochen

Und jetzt kann ich da halt zwei Dinge machen.

Jochen

Ich könnte es entweder schneiden, könnte halt sagen, irgendwie, ich hätte gern alle Seiten, in denen beides vorkommt, oder sozusagen, also die Schnittmenge der beiden Mengen und oder ich könnte sagen, ich nehme die Vereinigung, also entweder das ist, wo Python drin vorkommt oder wo Keyword drin vorkommt, die Seiten hätte ich gerne und kriegt dann einfach alle.

Jochen

Und das ist ja auch das, was man sozusagen in, ich glaube, Google hat dann eine Syntax für, das ist übrigens auch bei Postgres, kann man die Syntax, die Google verwendet, TS, Two-Query, irgendwas, to-Web-Query, ach, ich weiß nicht mehr, wie die Postgrenz-Funktion heißt, der übergibt man einfach diesen Query-String, den man bekommen hat, und dann macht die daraus eine Anfrage nach der gleichen Logik, sodass man halt auch und oder oder verwenden kann und so.

Jochen

Ja, und genau, das ist halt im Grunde das, was halt so eine Suchmaschine macht.

Jochen

Das Problem ist jetzt natürlich, die Seiten, wie auch immer, wenn man die jetzt bekommen hat, ob man die Mengen vereinigt oder geschnitten hat, man hat jetzt noch keine Reihenfolge der Seiten irgendwie.

Jochen

Und die Frage wäre halt, wie berechnet man die aus und das, was halt so schon immer gemacht wird und

Dominik

zählen, absolute Zahl sortieren.

Jochen

Kann man und könnte man auch machen, ja.

Jochen

Also das, was halt, äh, was halt schon, was normalerweise immer so für Scoring-Ranking verwendet wird, ist halt TF-IDF, das hatten wir glaube ich auch schon ein paar Mal, ist halt einfach der, die Query wird halt in einen TF-IDF-Vektor verwandelt und sozusagen die Frage.

Dominik

Also außer Leute, die davon schon Ahnung haben, hat das jetzt niemand verstanden, deswegen musst du nochmal kurz erklären, was das denn überhaupt ist.

Jochen

TF-IDF ist Term-Frequency mal Inverse Document Frequency und das legt sozusagen Gewichte fest für die Tokens, also die Word-Teil aus deiner Query für Keyword und für Python jetzt in unserem Beispielfall.

Jochen

Und ja, das ist halt, ich weiß nicht genau, ob man genau erklären muss, wie das ausgerechnet wird.

Jochen

Also Time-Frequenz wäre halt sozusagen auf dieses Seitenbeispiel übertragen, wie ist die Frequenz von dem Wort Python zum Beispiel auf dieser Seite.

Jochen

Das heißt, ich zähle, wie oft Python auf der Seite vorkommt und teile das durch die Anzahl aller Worte auf der Seite.

Jochen

Da weiß ich halt, wie viel Prozent der Worte auf dieser Seite sind halt Python.

Jochen

Das ist die Time-Frequenz.

Jochen

Und multipliziere das mit der Inverse Document Frequency, das ist halt sozusagen, in wie viele Seiten kommt denn dieses Wort überhaupt vor?

Jochen

Ein Maß dafür.

Jochen

Und je weniger das vorkommt, desto höher ist die Inverse Document Frequency.

Jochen

Und desto charakteristischer ist das Wort im Grunde.

Dominik

Für das, was da gerade steht.

Ja, genau.

Dominik

Das heißt, du weißt nämlich genau, wenn das hoch ist, auf diesem Abschnitt geht es tatsächlich jetzt um Python und es wird nicht irgendwie nur als Seitenkommentar mal kurz erwähnt oder als kurz.

Jochen

Genau, genau, also Artikel sind halt so ein Beispiel für Sachen, die, also der, die das, das kommt halt auf jeder Seite vor.

Ja, okay, Stopword.

Jochen

Daher ist es halt einfach nicht so relevant, weil Adverse Document Frequency davon wäre halt sehr, sehr niedrig, weil, naja, es kommt halt überall vor.

Jochen

Das heißt, ja.

Jochen

Jetzt multipliziere ich diese beiden Teile, also einmal, wie oft kommt das Wort auf der Seite vor, mit wie wichtig ist das üblicherweise oder wie charakteristisch ist das.

Jochen

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 überhaupt nicht charakteristisch sind, weil sie überall vorkommen.

Jochen

Also der, die das, ist halt, die kriegen halt sehr niedrige Gewichte und Worte, die halt sehr spezifisch sind, die kriegen halt sehr hohe Gewichte.

Jochen

Und das macht man jetzt auch mit der Query und macht das auch nochmal mit allen Seiten sozusagen und dann multipliziert man das miteinander.

Jochen

Also die Cursinus ist uns.

Dominik

Das heißt, man muss halt tatsächlich genau diese Dinge bilden oder bauen für jeden einzelnen Textbaustein, den man untersuchen möchte.

Jochen

Ja, man muss da gar nicht so viel machen.

Jochen

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.

Jochen

Diese ganzen Geschichten, wie oft kommt das Wort jetzt wovor und wie das speichert man auch in dem Index, aber das ist eigentlich nicht so schlimm.

Jochen

Das geht eigentlich relativ einfach.

Jochen

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.

Dominik

Du machst irgendwas bei einem Cosinus-Distanz.

Jochen

Ja, ja, genau.

Jochen

Genau, wenn ich jetzt zwei Vektoren habe, dann ist die Cosinus-Distanz dazwischen einfach nur der Winkel, also der Cosinus des Winkels zwischen den beiden Vektoren.

Dominik

Also jetzt nochmal kurz an, der Vektor ist tatsächlich dann die Information darüber, auf welchen Seiten wie viel Information über das gesuchte Wort Python oder Keyword steht.

Jochen

Ja, also die Gewichte sind jetzt sozusagen die Werte in dem Vektor und können halt niedriger oder höher sein.

Jochen

Das wird immer normiert auf, die Vektoren werden immer normiert auf 1, auf eine Länge 1 sozusagen.

Jochen

Und der Anteil von einem Wort, das halt wichtig ist, ist halt dann einfach höher als von Worten, die nicht so wichtig sind.

Jochen

Und die länger der Vektor, man normiert auch deswegen, damit halt längere Vektoren nicht einen Vorteil haben, ja.

Jochen

Oder das halt längere, wenn du das nicht normieren würdest, dann würden Seiten, auf denen viele Worte stehen oder Dokumente, die halt sehr, sehr lang sind, würden halt viel relevanter bei vielen Suchabfragen sein, einfach weil die halt auch viel mehr Sachen matchen.

Jochen

Daher normiert man das halt auf eine Einheitslänge, sodass halt dann, wenn ein Dokument sehr lang ist, kriegen die einzelnen Wort halt weniger Gewicht.

Jochen

Und ja, dann wird es halt vergleichbar.

Jochen

Und ja, also im Grunde ist das eben relativ einfach.

Jochen

Also diese TF-E, DF-Distanz ist halt nichts weiter als der Kosinus zwischen dem Winkel der beiden Vektoren.

Jochen

Und das klingt jetzt auch irgendwie kompliziert.

Jochen

Tatsächlich ist es so, es ist halt super einfach auszurechnen, weil das ist einfach nur das Skalarprodukt der Vektoren.

Jochen

Und das wiederum ist super einfach auszurechnen, also dieser Vektorraum, in dem diese Operationen stattfinden, wenn man jetzt sozusagen jedem Wort eine Dimension zuordnet.

Jochen

Texte, also wenn man jetzt einen Dokumentkorpus nimmt, ganz viele Dokumente, dann kann es sein, dass da so ein paar 10.000 Wörter drin vorkommen.

Jochen

Oder vielleicht, wenn man jetzt, also vielleicht auch ein paar hunderttausend, also und man hat jetzt sozusagen für jedes Wort eine Dimension, dann klingt das irgendwie alles ganz schrecklich.

Jochen

Wenn man sagt, ein 100.000-dimensionaler Vektorraum ist ja schwer vorzustellen und dann daran irgendwie winkel, uh, was soll denn das sein?

Jochen

Aber eigentlich ist es halt total blöd.

Jochen

Einfach, weil das Schöne daran ist, oder das ist der Grund, warum er das macht, ist, ein Skalarprodukt an der Stelle ist halt, wenn das so Spaß ist, also die meisten Worte kommen mir in den meisten Texten gar nicht vor.

Jochen

Das heißt, wenn ich einen Dokumentvektor habe, dann ist der an den allermeisten Stellen null.

Jochen

Und alle Dinge, die null sind, die muss ich mir beim Skalarprodukt gar nicht angucken, wenn irgendwas multipliziert wird, wo eine Null drin ist, dann ist es ja sofort auch wieder null.

Jochen

Das heißt.

Dominik

Kann ich das einfach mal nachrechnen, bitte?

Jochen

Das heißt, die Rechenoperation ist halt, ich gehe durch jedes Ding in der Query, ja, also nur durch die, die gesetzt sind, das sind ja meistens nur zwei, drei Worte.

Jochen

Und gucke dann, existiert im Index dafür Seiten, auf denen das vorkommt.

Jochen

Und das war's.

Jochen

Mehr muss ich nicht machen.

Jochen

Und damit habe ich ja schon sozusagen alle, wo ich überhaupt ein Skalarprodukt ausrechnen kann, gefunden.

Jochen

Und jetzt muss ich nur noch ein paar andere statistische Werte haben, um das halt wirklich ausrechnen zu können.

Jochen

Und das ist halt, dann ist es halt eine total einfache Operation.

Jochen

Also es ist halt.

Dominik

Weißt du, welche anderen statistischen Werte du ja jetzt noch haben möchtest zum eigentlichen Ranken?

Äh.

Jochen

Na, tatsächlich müsste man wahrscheinlich noch an jedem, also die Dinge im Index heißen dann Posting Listen, dann müsste man wahrscheinlich noch irgendwie den TF-EDF-Wert tatsächlich, also ich weiß es ehrlich gesagt nicht.

Jochen

Lücine macht das, ich weiß gar nicht, was Lysine da speichert, das speichert noch ein paar andere Sachen.

Jochen

Ich würde sagen, einen TF-EDF-Wert braucht man vielleicht.

Jochen

Also eigentlich, also ich glaube, Lucine und so, die machen das so, dass sie das auch erst ausrechnen, wenn die Query kommt.

Jochen

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

Jochen

Also man kann das Ganze auch leicht und naiv implementieren in Python.

Jochen

Man kann einfach für diese Posting-Listen, das sind sozusagen die Listen der Seiten, auf denen irgendwas vorkommt oder die IDs der Dokumente, die packt man einfach in ein Set.

Jochen

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 Postingliste zu tun.

Jochen

Posting-Liste, so heißt es im Allgemeinen, aber in unserem Fall wäre das jetzt, wenn man jetzt sozusagen als Datenstruktur dafür Sets nehmen würde, Sets und dann kannst du halt hinterher, wenn eine Query kommt, irgendwie genau das machen, kannst halt irgendwie Schnittmenge und Vereinigungsmenge bilden, je nachdem, ob du deine Query mit AND oder OR verknüpfen willst.

Jochen

Und ja, kriegst du, kriegst damit schon mal was raus und kannst halt auch, wenn du jetzt die TF-IDF-Werte noch mitgespeichert hast, kannst du auch einfach die Kursinusistanz ausrechnen.

Jochen

Und hast dann schon im Grunde das implementiert, was eine Suchmaschine so tut.

Jochen

Das geht wahrscheinlich in 30 Zeilen-Python oder sowas.

Ja, ja, wir lieben keinen.

Jochen

Also das ist das geht relativ einfach, denke ich mal.

Jochen

Und es ist auch mit, ich habe es mit Sets auch schon mal ausprobiert, das ist auch ziemlich schnell.

Jochen

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, dass die halt sehr, sehr viele Hauptspeicher verbrauchen.

Jochen

Und überhaupt, man muss natürlich alles, was man jetzt in, wenn man es in Python-Set hat, muss man es im Hauptspeicher halten, weil, naja, es ist halt eben keine Datenstruktur, die irgendwie auf der Platte liegen kann.

Jochen

Ja, während jetzt ein Lucinen-Index ist ein Ding, das eigentlich auf der Platte liegt und das skaliert, also das kann halt auch größer als Hauptspeicher werden, ist gar kein Problem.

Jochen

Und das ist so gebaut, dass das maximal performant ist, wenn Sachen von der Platte auch gelesen werden und so.

Jochen

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

Jochen

Und aber tatsächlich, wenn man das jetzt einfach so implementieren möchte, kann man das mit Sets durchaus mal machen.

Jochen

Was dann die großen Suchmaschinen machen und weswegen das Ding auch Postinglist heißt, ist, dass man das eben nicht in einem Set hält, sondern in einer Liste, die sortiert ist.

Jochen

Sozusagen, wo die, wo eben die Dokument-IDs oder jetzt im Beispiel Seitenzahlen, die werden halt einfach sortiert.

Jochen

Und dann speichert man nicht die Seitenzahlen selber oder die IDs selber, sondern man speichert nur die Differenz dazwischen.

Jochen

Weil die Differenzen zwischen den IDs sind halt viel kleiner.

Jochen

Und dann macht man etwas ganz fieses, das nennt sich Variable White Encoding.

Dominik

Schon wieder so ein Zauberwort, ja.

Jochen

Und das bedeutet halt, dass du diese normalerweise in C oder so, wenn du dir jetzt ein Array hast, ja, dann müssen ja alle Werte in dem Array den gleichen Typ haben.

Jochen

Und das macht man halt nicht so, um Platz zu sparen, sondern man, äh, deswegen man nimmt einfach üblicherweise dann Characters, also byte-mäßige Dinge.

Jochen

Ich weiß gar nicht, also in C weiß ich jetzt, wie es geht, ich habe aber mal sowas tatsächlich mal selber implementiert.

Jochen

Fast Suchmaschinen geschrieben aus Versehen.

Jochen

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

Jochen

Keine Ahnung.

Jochen

Geht bestimmt auch irgendwie und definiert sich die Datenstruktur selber.

Jochen

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

Jochen

Und wie viele Bytes ich sozusagen pro, oder wie viel Bit ich pro Eintrag in der Postingliste verwende, das mache ich, das verwalte ich selber.

Jochen

Weil wenn die Abstände klein sind, dann kann ich viel weniger Bits nehmen, als wenn die Abstände groß sind.

Jochen

Da muss ich halt mehr Bits nehmen und deswegen heißt das Ding auch Variable Byte-Encoding, weil ein Eintrag in der Postingliste halt unterschiedlich viele Bytes haben kann, je nachdem, wie groß der ist.

Jochen

Oder wie der Abstand ist zwischen der vorherigen und der nächsten ID.

Jochen

Und wenn ich jetzt sortierte Listen habe, dann kann ich die sehr, sehr gut, da gibt es halt diverse Algorithmen für, kann ich sehr gut schneiden zum Beispiel.

Jochen

Solche Operationen wie Schnittmenge davon bilden, das geht halt toll.

Jochen

Geht mit dem Sets auch, aber Sets können ja noch viel mehr und so.

Jochen

Aber da brauche ich ja eigentlich nur diese Schnittoperation, vor allem ist es auch total simpel und das geht halt super, wenn ich so sortierte Listen habe.

Jochen

Ja, und genau, das ist halt auch, das ist relativ schnell, das vor allen Dingen auch deswegen schnell, also die Kompression an der Stelle, die ich dadurch kriege, also ich kriege das auf ein Drittel des Ursprungs, also wenn ich das einfach nur als Integer speichern würde, dann brauche ich, ja, sagen wir mal, ich brauche einen Speicher 1, ja, und wenn ich das irgendwie variable, mit Variable Byte-Encoding codiere, dann brauche ich halt nur noch Speicher 0,3.

Jochen

Also das reduziert das halt auf ein Drittel.

Jochen

Und es ist auch noch viel schneller.

Jochen

Und der Grund, warum es viel schneller ist, ist halt einfach, dass der das Bottleneck ist halt irgendwie, das durch die CPU zu drücken, also die Speicherbandbreite ist das Problem.

Jochen

Du musst es halt irgendwie, diese Listen von Arrays musst du halt irgendwie durch die CPU kriegen und irgendwie durch den Hauptspeicher.

Jochen

Und wenn die kleiner sind, dann geht das schneller durch den Hauptspeicher, weil, oder durch den Bus, weil ja, und das in der CPU dann auszupacken und miteinander, das ist halt alles kein Problem mehr.

Jochen

Aber ja, das halt aus dem Hauptspeicher durch die CPU zu quetschen, das ist halt das Problem.

Jochen

Und wenn das kleiner ist, dann geht das halt schneller, weil du hast halt nur so und so viel hundert oder so und so viel Gigabyte pro Sekunde, die du da durchkriegst.

Jochen

Und ja, genau, deswegen macht man das so, das macht das Ganze so ein bisschen kompliziert.

Jochen

Aber ja.

Jochen

Und auch selbst so von dem Volltext-Index von Postgres weiß ich, dass er das auch so macht im Prinzip.

Jochen

Also die solche Sachen werden da auch schon gemacht.

Jochen

Also kann man sich schon vorstellen, es ist schon relativ, ist halt nicht so eine total naive Implementation.

Jochen

Das ist auch ganz schön optimiert schon.

Ja.

Dominik

Jetzt haben wir eine schnelle Suchanfrage schon, aber ich habe immer noch nicht genau verstanden, warum die Ergebnisse jetzt besonders toll sein sollen.

Dominik

Es gibt bestimmt noch ganz viele andere.

Jochen

TFR, DFS oder der Standard.

Jochen

Das hat man ganz lange gemacht, jetzt heutzutage auch nicht mehr, sondern heutzutage nimmt man eher sowas wie, äh, also es gibt halt zum Beispiel die Treck-Konferenzen.

Dominik

Treck, das hört sich nach einer Raumschiff-Serie an.

Jochen

Ja, wird eher mit C geschrieben und nicht mit K, aber da haben sich Leute halt Gedanken drüber gemacht, wie evaluiert man eigentlich Suchergebnisperformance von Suchmaschinen.

Jochen

Da gibt es dann diverse Standard-Korpora mit Dokumenten drin, wo man dann halt auch Standardqueries hat, die man drauf abfeuert und dann guckt halt, wie sind die Ergebnisse und so.

Jochen

Und da hat sich irgendwann, ich weiß gar nicht, wann das, also TF-IDF hat man lange benutzt, aber dann hat man festgestellt, so kleine Modifikationen, sie formeln, es sieht immer so ein bisschen ähnlich aus, aber manchmal passt man die so ein bisschen an, manchmal kommen so konstante Faktoren dazu oder so, die man irgendwo reinbaut.

Jochen

Und dann wird das, werden die Ergebnisse ein bisschen besser.

Jochen

Und das, was momentan, also das hat ganz viele unterschiedliche gegeneinander getestet.

Jochen

Das, was in den meisten Fällen gut funktioniert und das, was jetzt auch alle so als Standard, glaube ich, verwenden, nennt sich BM25.

Dominik

BM25.

Jochen

Ja, oder OKPM steht für Best Match.

Ja.

Jochen

OK.

Jochen

Ja.

Jochen

Das ist, glaube ich, hier.

Ja, ja, ja, genau, genau.

Jochen

Daher kommt das auch.

Dominik

Entschuldigung.

Jochen

Und das ist nicht großartig anders als TF-IDF sozusagen standardmäßig.

Jochen

So ein paar Dinge sind halt auch dran, aber eigentlich sind da nur so ein paar magische Konstanten und Faktoren drin.

Jochen

Und ja, das ist halt so ein bisschen Formelai.

Jochen

Und ist ja auch nicht offensichtlich, warum das jetzt genau diese Art besser funktioniert als die anderen.

Jochen

Deswegen heißt es, und genau deswegen ist es auf BM25.

Jochen

Also man hat halt ganz viele Dinge ausprobiert und das, was dann halt über ganz viele Datasets hinweg und Curry-Sets gut am besten funktioniert hat, ist halt dieses Ding.

Jochen

Nämlich nicht Bestmatch 13 oder 47, sondern Bestmatch 25 hat sich herausgestellt, als das funktioniert in den meisten Fällen irgendwie.

Dominik

Das ist doch eine tolle Zahl übrigens, ja.

Jochen

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.

Jochen

Und seitdem das auf dieser Konferenz halt dann als Ergebnis rausgefallen ist.

Dominik

Guckst du eigentlich Picard?

Jochen

Die Serie.

Dominik

Ja, ist gerade eine neue Star Trek-Serie.

Jochen

Ja, tatsächlich habe ich jetzt auch mit angefangen, weil ich dachte so gut.

Dominik

Ich habe auch schon zwei Folgen geschafft.

Jochen

Ja, es gibt jetzt fünf, glaube ich, ne?

Dominik

Kann sein.

Ich habe keine Ahnung.

Jochen

Ja, jetzt war jetzt ein verregneter Sonntag dieses, da haben wir, glaube ich, tatsächlich alle geschafft.

Dominik

Cool.

Dominik

Ja, läuft gerade auf Prime.

Dominik

Sehr schön.

Dominik

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

Jochen

Ja, ja.

Jochen

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

Aber ja, da ist ja auch nicht mehr.

Jochen

Der Spektakelfaktor doch irgendwie mitgezogen.

Dominik

Der Flongen Flossbach.

Ja.

Jochen

Jedenfalls, ähm, genau, genau.

Jochen

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

Jochen

Das ist auch immer, wie, das ist auch schon über zehn Jahre her oder so.

Jochen

Da dachte ich mir so, ah, da habe ich davon gelesen, Bestnet 25, voll gut.

Jochen

Bringt auf jeden Fall noch ein bisschen was gegenüber TF und so.

Jochen

Dazu kann man das nicht in Lysin einbauen.

Jochen

Und dann habe ich da so ein bisschen reingeguckt und dachte mir so, oh nein.

Das geht nicht.

Jochen

Ich muss so viele Klassen anfassen, das kann man einfach völlig vergessen.

Jochen

Und war relativ enttäuscht und hab mir damals schon gedacht, Lysin, Dreck.

So ein Unsinn.

Jochen

Aber mittlerweile haben das andere Leute dieses, äh, haben das implementiert.

Dominik

Die hatten mehr Lust da drauf.

Jochen

Mehr Ausdauer und jetzt ist es halt drin und es funktioniert und das ist auch das, was man, glaube ich, automatisch irgendwie kriegt als Default.

Dominik

Wie M25.

Dominik

Was war denn damals bei den ersten Suchmaschinen?

Dominik

Also Alter Vista zum Beispiel war ja so mit TF-IDF.

Jochen

Oder leichte Abwandlung davon, aber im Wesentlichen das.

Jochen

Das ist auch das, was irgendwie so ein bisschen diese ersten SEO-Geschichten getrieben hat, wo Leute dann so angefangen haben, alle möglichen Worte mit in ihre Seiten zu packen, für die sie gefunden werden wollen.

Jochen

Ja.

Jochen

Weil das zielt natürlich genau darauf ab, halt irgendwie den TF-IDF, den TF-IDF-Wert hoch zu.

Und das funktioniert ja auch.

Jochen

Also wenn du es ganz naiv machst, kannst du damit tatsächlich irgendwie dann für alles Mögliche gut ranken.

Jochen

Ja, es lässt sich halt sehr leicht gamen, aber ja, funktioniert heute natürlich alles nicht mehr so richtig toll.

Dominik

Wird ja bestraft.

Jochen

Ja, ja, ja, ja, ja.

Jochen

Ja, das ist auch noch so ein Thema, Seone.

Jochen

Aber genau, also diese, aber daran sieht man schon, dass es mit der Relevanz irgendwie nicht so einfach ist, dass die ganzen Suchmaschinen haben das auch nicht so richtig hingekriegt und die erste, die das halt so ein bisschen, die was fundamental Besseres gemacht hat an einer Stelle, die hat halt alle anderen dann, wie sagt man das, aus dem Wasser geblasen hinter sich gelassen und ist jetzt halt irgendwie die größte.

Dominik

Ich muss mir gerade ein großes Liebferd vorstellen, dass er einmal in die Badewanne hüpft.

Jochen

Ja, weil eben so ein einzelner Wert ist halt so, ist halt problematisch.

Jochen

Leute fangen an, dann drauf zu optimieren und dann ist auch die Frage, was für Leute oder was für Fragen stellen die Leute eigentlich und kann man das eigentlich damit abbilden?

Jochen

Ist das, ist der Wert, so ein TF-EDF, so Cosinus-Sistanzwert, ist der für alle Arten von Suchanfragen und Dokumenten immer das Richtige?

Jochen

Und da ist auch die Antwort relativ klar, nein.

Ist nicht so.

Jochen

Also, und das ist halt etwas, was Leute, glaube ich, oft nicht so wirklich auf dem Schirm haben, dass ihr Problem oft nicht ist, irgendwie eine etwas bessere TF-IDF-Formel zu finden oder irgendwie was Magisches, was irgendwie anders die Relevanz gut macht, dann plötzlich magisch, sondern dass 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 darauf und was kann ich tun, um das irgendwie zu verbess

Jochen

ern?

Jochen

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.

Jochen

Zum Beispiel, aber ich meine, es ist eigentlich, vielleicht kann ich einfach ein paar Beispiele dafür nennen, warum das halt, also TF-IDF, wenn ich jetzt zum Beispiel Location-Informationen dabei habe, hilft mir halt nicht so richtig viel.

Jochen

Also ich suche nach einem Restaurant-Namen irgendwie bei Google Maps oder so.

Jochen

Dann hilft es mir nichts, wenn ich jetzt TF-IDF die nächsten Namen irgendwie kriege von allen Restaurants in Deutschland oder weltweit sortiert.

Jochen

Dann wird wahrscheinlich irgendwo ein Restaurant in Kuala Lumpur vielleicht irgendwie am ähnlichsten sein oder den besten Score haben, aber das hilft mir ja nichts, weil ich komme da ja gar nicht hin.

Jochen

Das heißt, da muss irgendwie die Information, wo ich bin und wie nah das an mir dran ist, ja auch irgendwie mit rein.

Jochen

Sonst geht das bestimmt nicht so toll.

Jochen

Oder halt, wenn ich jetzt mal eben eine E-Commerce-Seite habe 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, was die Leute relevant gefunden haben zu einer Query.

Jochen

Also wenn jetzt irgendwann nach irgendwie, keine Ahnung, samtbezogene Sessel Amsterdam gesucht hat oder sowas und dann hinterher irgendein Hotelzuschlag.

Dominik

Ganz um Rechtsbestände, ja.

Jochen

Dann weiß ich, dann weiß ich halt, das ist wahrscheinlich relevant gewesen für diese Suchanfrage.

Jochen

Und diese Information kann ich natürlich auch wieder irgendwie mitverwenden, um das beim nächsten Mal, wenn jemand anders so eine Anfrage stellt, das zu verbessern.

Jochen

Aber auch da hilft mir halt die FEDF gar nicht.

Dominik

Cookies.

Jochen

Cookie hilft mir auch nicht.

Dominik

Stehen die in den Informationen, kann man die da nicht in sowas reinschreiben und die dann irgendwie beim nächsten Mal wiederwählen?

Dominik

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

Jochen

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 nach, wenn ich in so einer 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.

Jochen

Es sei denn, es wird natürlich auch Ausnahmen, es kann natürlich auch sein, dass, keine Ahnung, ich nach, weiß ich nicht, Dora-Automat suche, ja, und dann aber so geflasht bin von dem, was hast du hier?

Jochen

Ein Luftbefeuchter, den ich irgendwie sehe im Ergebnis, obwohl er völlig irrelevant ist und dann draufklicke und den sofort kaufe.

Dominik

Direkt neben den goldenen Schieberrad, vielleicht waren die auch zusammen mit einem.

Jochen

Aber so im Durchschnitt ist es wahrscheinlich so, wenn ich, wenn Leute was suchen und dann auf irgendwas aufklicken und das kaufen, dann war das wahrscheinlich relevant.

Jochen

Und die Informationen sozusagen, wie viele der Leute, oder das, wenn ich jetzt eine neue Suche, jetzt stellt jemand nochmal die gleiche Query.

Jochen

Und jetzt kann ich ja an das Suchergebnis mit ranpappen.

Jochen

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

Jochen

So und so viele haben drauf geklickt.

Dominik

Leute, die das gekauft haben, kaufen auch.

Jochen

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

Jochen

Muss ich ja nicht, ja, kann ich auch.

Jochen

Nur mit TF-EDF hat das nichts zu tun.

Jochen

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

Jochen

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

Jochen

Ist das irgendwie interessant?

Jochen

Gehört das irgendwie zu den Dingen, die momentan irgendwie auf meiner Seite sowieso angefragt werden oder ist das halt irgendwas Uraltes oder so?

Jochen

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

Jochen

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.

Jochen

Es ist halt ein viel breiteres Ding.

Jochen

Also es ist halt sozusagen, im gesamten Web kann ich irgendwas finden.

Jochen

Also Google macht ein höchst ein viel schwereres Problem.

Jochen

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

Jochen

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

Jochen

Aber ich muss dann halt solche Sachen mir schon angucken.

Jochen

Es reicht nicht, wenn ich da eine Elasticsearch nehme, das in der Default-Konfiguration laufen lasse und dann hoffe, dass das irgendwie gut wird.

Jochen

So einfach ist es leider nicht.

Jochen

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 die Querys, wo kein Ergebnis kommen.

Jochen

Also ich meine, ich finde das ja sowieso mehr 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 uns doch mal irgendwo was zu essen bestellen und abholen oder so.

Jochen

Okay, das war ganz gut, gehen wir auf die Webseite, um zu gucken, hat der Laden denn jetzt auf oder nicht.

Jochen

Das ist halt immer wieder, ganz viele Läden kriegen das irgendwie nicht hin, da die Öffnungszeiten drauf zu schreiben.

Jochen

Und haben aber vielleicht ein Suchfeld und wenn die Leute da immer Öffnungszeiten reinschreiben und die nicht finden, oder die Öffnungszeiten sind irgendwo versteckt, wo tiefe Struktur, dann kann man ja auf die Idee kommen, man sucht danach.

Jochen

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.

Jochen

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

Jochen

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

Jochen

Und man kann natürlich auch noch dann schummeln und dann sagen, okay, wenn.

Dominik

Wenn Öffnungsheiten angegeben wird, zeigt immer als erstes die Öffnungsheiten an und nicht die Ergebnisse, die die Suche drücke.

Genau.

Jochen

Also das ist halt so ein bisschen wie, wenn man sich vorstellt, man hat eine Firma und die hat irgendwie so eine Support, ein Helpdisk 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.

Jochen

Das kann man ja einfach verwenden, sozusagen.

Jochen

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 Aktenschrank hinter dir und guckst, was dabei rauskommt.

Jochen

Das wird halt nicht gut funktionieren.

Jochen

Insofern, also die, oft ist es, man hat so immer so Powerlaw-Verteilungen, also wieder.

Dominik

Eine was?

Dominik

Eine Powerlaw?

Jochen

Ja, Powerlaw, also Potenzmengenverteilung, ich weiß gar nicht, wie das deutsche Wort dafür ist.

Jochen

Dass du, das hat manchmal ganz vielen Sachen, dass halt 20% der sozusagen Such, also 20% der, also bei Suchmaschinen wäre das wahrscheinlich, ich hoffe mal, ihr seht keinen allzu offensichtlich ein Unsinn, aber dass halt 20% der Queries machen halt 80% der Suchanfragen aus oder sowas.

Jochen

Kommt natürlich auch drauf an.

Jochen

Es gibt wahrscheinlich auch Suchmaschinen, die sehen ganz viele Querys nur einmal und dann nie wieder und davon, also vielleicht, manchmal ist halt der Tail halt länger und manchmal ist es halt der Tail auch dicker.

Jochen

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

Jochen

Und wenn das halt 100 Stück sind, dann kann man die sich halt alle mal angucken und sich überlegen, okay, was könnte man denn Usern, die dauernd diese Anfragen stellen, dann vielleicht mal zeigen, was sie interessieren könnte.

Jochen

Und das hat dann gar nichts mehr mit, was ist dies, was macht eigentlich die Volltext, was macht eigentlich diese Software, die Volltextsuche macht, sondern wie gehe ich mit diesem Problem irgendwie um auf der Seite.

Jochen

Und natürlich muss ich dann halt irgendwie eine Art haben, wie ich sicherstelle, dass wenn ich jetzt irgendwelche Änderungen mache, dass nicht kaputt geht beim nächsten Release und ich muss es testen und all diese ätzenden Softwareentwicklungs-Best Practices und so, die man halt einhalten sollte, wenn man irgendwie Dinge programmiert.

Jochen

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

Dominik

Also du willst was dann vielleicht in Dango bauen oder so und dann.

Dominik

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 deine Antwort zugeordnet ist und wenn das kommt, dann wird die direkt ausgespucken und ansonsten wird dann die Suchmaschine bedient oder sowas.

Jochen

Ja, und dann halt nur dann, wenn das nicht.

Jochen

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

Jochen

Und dann hat so vielleicht sogar ein Modell, das irgendwas rankt, aber gut, habe ich jetzt auch noch ein.

Jochen

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

Jochen

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

Jochen

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

Dominik

Ja, okay, keine gute Idee.

Dominik

Also du hast gesagt, okay, TF-EDF, das ist das Standard, was zum Beispiel ein ElasticTurch oder ein Solar als Standard machen, weil der das Benzin drunter ist, was das irgendwie auch kann, obwohl das dieses BM25 ist.

Jochen

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

Jochen

Aber die Unterschiede sind nicht so groß.

Jochen

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

Jochen

Wenn man jetzt viele Sucheinfragen hat und seite wo viel Umsatz ist und dann die Ergebnisse in Prozent besser werden, dann ist das ja schon mal super.

Jochen

Nur dass dadurch, dass man das alte ausgetauscht hat, ist es ja unter Umständen viel Geld, was dann zusätzlich reinkommt und so.

Jochen

Aber das sind halt so, also die Änderungen an diesen Details, das bringt nicht so wahnsinnig viel.

Jochen

Ein bisschen was.

Jochen

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

Dominik

Ja, ja, da kann man ganz, ganz viele tolle Informationen eigentlich sammeln und verwenden.

Dominik

Da kann man eine richtige Wissenschaft draus machen.

Dominik

Ich glaube, da sind auch ziemlich viele Marketeers, die sich mit sowas auseinandersetzen, irgendwie, die dann irgendwie Interesse daran haben, wie man das in Besser bastelt.

Dominik

Interessant, ja.

Jochen

Ja, ja, das ist ja auch dann 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 in der Rolle des Dokuments, das gefunden werden möchte, sozusagen, als wenn man eine Webseite hat, die halt über Google zum Beispiel gefunden werden will oder so.

Jochen

Und dann hat man dieses SEO-Problem.

Jochen

Da gibt es ja auch ganz unterschiedliche, ganz unterschiedliche Aspekte und auch da ist es halt so, dass üblicherweise wird dann halt zu sehr auf die technischen Aspekte fokussiert.

Jochen

Und dann wird halt irgendein Quatsch gemacht, ja, 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.

Jochen

Und dann wird man sofort bei Google super gereinigt, ja.

Dominik

Das funktioniert zwei Monate, dann kommt der nächste Patch und dann erstmal down.

Dominik

Dann werden alle gelöscht, alle Ergebnisse, die man vorhat, das ist super.

Dominik

Also ich habe gehört, Content ist King, ja, also Google versucht, also zumindest das Team versucht, immer auf den besten Content zu optimieren, schmeißen alle Sachen raus, die so Leute ausdenken.

Dominik

Das heißt, langfristige Strategie wäre tatsächlich qualitativen Content aufzustellen, der dann auch gut suchbar ist, der mit solchen TF-ID-F-Sachen vielleicht dann auch irgendwie klarkommt, aber der dann durch die, also vielleicht haben sie einen Qualitäts-Strenker, der sich irgendwie durch irgendwelche Daten ergibt und den sie dann damit bauen.

Jochen

Ja, was sie halt machen.

Dominik

Also Internetsuche ist ja sowieso nochmal vielleicht was anderes als Volltext-Suche, weil man ja da noch andere Dinge mit einbezieht.

Dominik

Also die Linksstruktur, wie was, weil früher war es halt 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.

Dominik

Und das ist jetzt vielleicht auch noch ein bisschen anders.

Jochen

Ja, aber das zeigt ja genau, dass halt die reine TF-IDF-Geschichte ist halt nicht unbedingt das führt halt nicht zu so total super Ergebnissen, sondern Google sind halt die Ersten, die mehr Informationen mit reingenommen haben und ich würde sagen, natürlich, das ist absolut ganz stinknormal, Volltextsuche eigentlich alles.

Jochen

Aber Google waren halt die Ersten, die jetzt nicht nur TF-IDF oder irgendwas, eine Variation davon verwendet haben.

Google hat den Page-Rank eingeführt.

Jochen

Sondern sie haben einen Page-Rank, genau.

Dominik

Was ist denn der PageRank?

Dominik

Das hat gar nichts mit Seiten zu tun.

Ja, genau, genau.

Jochen

Das halt könnte man denken, dass es was mit dem.

Jochen

Und so wurde es wahrscheinlich auch oft interpretiert.

Jochen

Mit den Pages?

Jochen

Dem Rank der Page zu tun hat, die man halt so hat.

Jochen

Dann gab es auch so irgendwie Browser-Plugins, die einem den eigenen Page-Rank auf der Seite angezeigt haben und so.

Jochen

Aber nein, das Wort kommt tatsächlich von Larry Page, also dem 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.

Jochen

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

Dominik

Ja, wir hatten du gerade noch zwei Sachen gesagt.

Dominik

Einmal diese Power-Dings, das habe ich ja schon wieder vergessen, wie es hieß.

Dominik

Und gerade Eigenwerte berechnen aus Matrizen mit Papering.

Dominik

Vielleicht erzählen wir das nochmal als einzelne kleine Subkapitel.

Jochen

Ja, ich weiß gar nicht, ob es so relevant ist, ich glaube, man kann es auch, wenn man das en Detail irgendwie, dann wird das relativ trocken und langweilig.

Jochen

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

Jochen

Es hat was zu tun mit, also wenn man kann den Linkgrafen des Web, also das Web ist im Grunde ein Graph.

Dominik

Also verknüpfte Knotenpunkte, die durch Linien miteinander verknüpft sind, das sind die Linien sind, die Links,

die einfach nicht.

Jochen

Mathematische Definition, eine Menge aus Knoten und Kanten und keine Ahnung, es gibt Gerichtete, wo die, das Web ist ein gerichteter Graph.

Jochen

Also ich kann halt auf eine Seite linken und die linkt nicht auf mich zurück.

Jochen

Und ja, es gibt jetzt, was das Ding hat bestimmte Eigenschaften, die es halt besonders machen.

Jochen

Also zum Beispiel Linkkraft des Web ist halt super Spaß.

Jochen

Das sind halt die meisten Seiten haben nur Verbindungen zu ganz wenigen anderen, ja, aber also es gibt ja auch Graphen, wo alle miteinander irgendwie verbunden sind.

Jochen

Das ist beim Web nicht so, die zu den allermeisten Seiten habe ich eben keine Links.

Jochen

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.

Jochen

Und ja, wenn ich einen Link habe, dann trage ich da jetzt zum Beispiel eine Eins ein in der entsprechenden Zeile und Spalte.

Jochen

Also wenn ich halt von X nach Y ma.

Dominik

Ich bin eine 1, wenn ich von meiner Seite auf deine Seite linke, dann steht ja 1.

Jochen

Genau.

Jochen

Ja, und das kann ich für das ganze Web machen und das in eine Matrix packen.

Jochen

Was natürlich ein bisschen schwierig ist.

Jochen

Auch da kann ich halt nutzen, dass das Ding Spaß ist und dass die allermeisten Werte null sind.

Jochen

Und die, die null sind, die schreibe ich halt einfach irgendwo hin.

Jochen

Und da kann ich die ganz sparen, die irgendwo, muss ich die nicht speichern.

Jochen

Das heißt, ich muss ja tatsächlich sozusagen nur da, wo Links sind, irgendwas speichern.

Jochen

Und ja, dann kann ich zum Beispiel im Page-Rank 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

Dominik

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.

Dominik

Oder gibt es einen Startpunkt?

Jochen

Ja, lauf ich darüber.

Dominik

Ja, genau.

Jochen

Laufe ich mit dieser Satz, ja genau.

Dominik

Also gibt es einen Startpunkt?

Jochen

Nö, du fängst halt irgendwo an.

Dominik

Du klickst dich einfach irgendwo durch.

Ja, random, ja.

Dominik

Ja, okay.

Dominik

Wikipedia-Artikel 1, 2, 3, 4, 5, 5, Querverweis auf irgendeine Quelle, die halt auf irgendeinen Nachrichtenportal, das sind auf irgendeinem Ender.

Jochen

Und was das Ding im Grunde abbildet, ist wie wichtig, wie zentral ist eigentlich eine Seite?

Und wie tief in diesem Knoten, wenn man sich das Web jetzt doch wieder als Knoten vorstellt oder sowas.

Dominik

Und dann der zentralste Knoten, welche Seite ist das?

Dominik

Ist das wahrscheinlich mittlerweile Google?

Dominik

Ich weiß es nicht.

Dominik

Gibt es da, weißt du das?

Gibt's das?

Jochen

Naja, keine Ahnung.

Dominik

Müsste dann ja eigentlich Google selber sein.

Jochen

Ja, Wikipedia ist immer weiter oben, aber Google, nee, glaube ich gar nicht mal.

Jochen

Google, äh, die, äh, die Links, die.

Dominik

Die sind nicht hart, die sind nicht Google, sondern der generiert.

Jochen

Die gehen da nicht mit in den Graphen rein.

Ja, okay.

Jochen

Also, ich weiß es nicht.

Jochen

Aber ist auch eigentlich egal.

Jochen

Spannend.

Jochen

Ja.

Jochen

Aber wenn man das jetzt kombiniert mit eben TF-IDF aufgeschickt, dann ist das halt viel besser, als wenn ich das nur, wenn ich nur TF-IDF nehme, weil es ist halt in gewisser Weise ein Maß dafür, ja, sozusagen, wie wichtig ist diese Seite eigentlich insgesamt.

Jochen

Und dann kombiniere ich halt eine lokale Geschichte TF-IDF mit irgendwie einer so einer eher globalen Geschichte.

Jochen

Und das funktioniert dann schon ganz gut.

Jochen

Und das führt halt dazu, dass ich eben, dass solche simplen Ich schreibe jetzt fünfmal irgendein Keyword auf eine Seite, Spielereien halt dann nicht mehr funktionieren.

Jochen

Weil dadurch werde ich halt nicht zentraler in dem Kraft, dass ich das tue.

Jochen

Und aber auf der anderen Seite ist das halt das, was dann die Leute mit den Backlinks immer meinen.

Jochen

Also wenn du halt ganz viele Links hast, die auf dich zeigen, dann bist du natürlich zentraler.

Jochen

Aber jetzt kannst du die Links natürlich auch wieder Gewächten und das ist so ein Katze-und-Maus-Spiel und keine Ahnung.

Jochen

Aber Google verwendet jetzt auch nicht nur Patrank und irgendwie sowas CF-IDF-Artiges oder so, sondern die verwenden halt ganz ganz.

Dominik

Der Patrank gibt es jetzt irgendwie neun oder zehn, also das werden das irgendwie nummertiv gestellt und Patrank 10 ist tatsächlich Google.com und The Government of India, India GovN.

Aha.

Dominik

CNN.

Dominik

Und ja, wie drei Konservation.

Dominik

Und dann Patrank 9 ist auch Python dabei, also Python Org.

Jochen

Also wenn du einen Link von Python org kriegst, dann voll gut.

Ja, genau.

Dominik

Das zählt was.

Jochen

Naja, also tatsächlich, heutzutage ist es so, es wird ganz, ganz viel, also nicht nur diese beiden Werte, sondern nehmen wir an, würde es jetzt nur TF-EDF und den Patchrank haben, hältst du zwei, die sind im Suchmaschinenbereich nennt man das mal Signale.

Jochen

Im Machine Learning-Bereich würde man das Features nennen.

Jochen

Sondern Google sammelt eher so 100, sagen sie so, aber tatsächlich sind es wahrscheinlich noch ein paar mehr.

Jochen

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 Quer gestellt hat.

Jochen

Ein paar kommen aus dem Dokument, irgendwie sowas wie PageRank oder kommt die Query irgendwie in der Domain vor oder sowas.

Jochen

Ein paar kommen aus einer Kombination von Query und Dokument.

Jochen

TF, IDF wäre so ein Fall, ne?

Jochen

Da multipliziert man das ja miteinander.

Jochen

Und jetzt hat man halt sozusagen für jedes Suchergebnis so einen Vektor mit irgendwie vielleicht 100 Einträgen oder 200 oder 500, auch immer.

Jochen

Und dann hat man halt üblicherweise ein Modell.

Jochen

Ist auch völlig egal, ob das jetzt ein Machine Learning trainiertes Modell ist oder ob das ein Modell ist, das Leute von Hand getuned haben.

Jochen

Es kommt aufs Gleiche raus letztlich, das diese Vektoren halt in Reihenfolge bringt und irgendwie halt einen endgültigen Score halt ausgerechnet.

Jochen

Im simpelsten Fall könnte das einfach eine gewichtete Summe sein, zum Beispiel.

Jochen

Du sagst halt, wie wichtig ist mir jedes einzelne Feature, dann machst du halt die Summe drüber und normierst es vielleicht noch irgendwie oder so.

Jochen

Und dann sortierst du halt nach der Summe.

Könnte man machen.

Jochen

Oder man kann es halt dieses Modell halt auch irgendwie trainieren.

Jochen

Und ja, kriegst dann halt irgendwie am Schluss eine Sortierreihenfolge.

Jochen

Und das ist halt eher so das, was heute gemacht wird.

Jochen

Das ist lustigerweise aber in den ganzen, also zumindest, ich weiß nicht, ob es kommerzielle Suchmaschinen gibt, die das implementieren, die sowas ähnliches machen.

Jochen

Die ganzen Open Source-Suchmaschinen können das nicht.

Jochen

Nicht so, also so ein bisschen.

Jochen

Also man kann so ein bisschen was machen.

Jochen

Aber so richtig.

Jochen

Aber so richtig toll können die das, also so cool wie irgendwie die großen Web-Suchmaschine machen die das eigentlich nicht.

Das ist auch so etwas.

Jochen

Also mich, mich, mich ärgert ja so ein bisschen oder ich mich wundert, dass es da so wenig ist.

Jochen

Also es sind viele Dinge, die halt so im Bereich Websuche oder so halt irgendwie schon lange gemacht werden.

Jochen

Oder da, das kommt halt nie so richtig an.

Jochen

Also was mich zum Beispiel wundert, ist, was Google seit 2004, glaube ich, macht oder so, die halten ihre Indizes alle nur noch im Hauptspeicher.

Jochen

Die gehen gar nicht mehr auf die Platte, weil Platte ist immer so ein bisschen blöd, weil du kriegst halt Latenzen, werden halt unvorhersehbar.

Jochen

Plötzlich liegen halt deine Sektoren ungünstig, irgendwie, du musst warten, bis das da vorbeikommt und du musst aber viele Sachen miteinander mergen und jetzt liegen die Kombinationen von die Sektoren sind halt ungünstig korreliert und plötzlich musst du halt auf eine Quary sehr lange warten.

Jochen

Das ist eigentlich totaler Mist.

Jochen

Du willst eigentlich relativ sicher sein können, dass es halt nach so und so vielen 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.

Jochen

Und Google, ich glaube auch, das ist der Grund, warum Google das so macht, die möchten halt wissen, okay, wenn jemand eine Suchmalanfrage eingegeben hat und wir dann das an diese 1000 Server, die halt jeweils nur einen Teil vom Index haben, schicken und dann kommt ein Ergebnis zurück, dann müssen wir halt nach 20 Millisekunden ist das halt durch.

Jochen

Wenn da halt Platten im Spiel wären, könnte man das überhaupt nicht mehr garantieren, weil du hast halt Pech und irgendwo musst du halt auf eine Platte warten.

Jochen

Und die Seektime da ist halt bei Platten auch, es sind halt mal 10 Millisekunden oder noch mehr.

Jochen

Und dann wird das Gesamtergebnis halt langsam dadurch, das ist halt irgendwie Kacke.

Jochen

Aber jetzt, wenn man sowas wie Lucine hat oder Elasticsearch oder Solar, da kann dann das durchaus passieren.

Jochen

Also wenn man Pech hat, dann ist eine Query halt langsam.

Jochen

Und zwar auch nicht deterministisch, irgendwie bestimmte Query, sondern halt irgendeine.

Jochen

Was halt, naja.

Jochen

Aber das ist halt so designt.

Jochen

Also es kann auch sein, dass man mittlerweile sagen kann, okay, nur dieser Index soll in Memory liegen oder so, aber ich weiß es nicht so genau.

Jochen

Auf jeden Fall mich wundert, dass das halt, weil bei den Hauptspeichergrößen heutzutage sollte das überhaupt kein Problem sein, dass man halt den Index halt im Hauptspeicher hält, ne?

Jochen

Und wenn das nicht reicht, dann schleibt man halt mehr Maschinen dazu.

Jochen

Ist auch, warum.

Dominik

Noch ein paar Ramriegel in den Server.

Jochen

Warum muss das auf, wie liegt man das auf die Platte optimiert sein?

Jochen

Das macht doch heutzutage eigentlich keinen großen Sinn mehr.

Jochen

Oh, da habe ich noch was vergessen.

Jochen

Bei den Ding, Redis, das hatten wir jetzt auch schon ein paar Mal, das kann auch Volltext suche mittlerweile ganz gut.

Dominik

Also Redis ist ein Cache, ein für bestimmte Dinge, die als Key-Value.

Jochen

Ja, Key-Value ist aber nicht nur das, das kann auch ein paar andere Datenstrukturen und das liegt tatsächlich nur im Hauptspeicher und das kann auch Volltext-Suche und das wollte ich mir auch schon immer mal angucken, aber habe ich es in letzter Zeit nicht geschafft.

Jochen

Es kann sein, dass das mittlerweile vielleicht ein bisschen sogar das erfüllt, was ich irgendwie gerne hätte.

Ja.

Jochen

Aber Luciden ist halt tatsächlich eher so drauf optimiert, dass es auf der Platte gut aussieht.

Jochen

Und ja.

Jochen

Also da hängt das irgendwie so ein bisschen hinterher.

Jochen

Und es hängt halt auch hinterher bei solchen Sachen wie, also im Maschinenlear-Bereich läuft dieses ganze Thema immer unter dem Namen Learning to Rank.

Jochen

Also sozusagen, dass du halt, du hast halt Features und du hast halt jetzt die Tränen in deinen Trainingsdaten sehen immer so aus, dass du Mengen hast von Queries und dann Ergebnislisten, wo halt Leute, also redaktionell annotiert ist, wie gut waren denn, wie relevant sind die Ergebnisse, also wo Leute meistens auf einer Skala von 0 bis 4 oder 0 bis 3.

Jochen

0 für, ist überhaupt nicht relevant zu 3 oder 4 oder das höchste ist halt super relevant für diese Anfrage.

Jochen

Ergebnislisten annotiert haben und du dann halt hinterher sozusagen testen kannst, wenn du jetzt was an deiner Suchmaschine geändert hast und fütterst sie halt mit den Queries und guckst ihr die Result-Listen an, dann kannst du halt einen Score ausrechnen.

Jochen

Gibt es dann unterschiedliche Maße, die man benutzen kann.

Jochen

Ja, Mean Average Precision, Normalized, Cumulative, Discounted Gain, Expected Reciprocal Rank oder was auch immer.

Dominik

Ich versuche jetzt dabei, mal kurz die alle drei Ergebnis zu erklären.

Jochen

Aber im Grunde sind das alles Maße dafür, wie gut ist jetzt sozusagen dieses Ergebnis für die Anfrage.

Jochen

Und ja, wenn ich halt über viele schaffe, besser zu sein als ein anderes Verfahren, dann brenge ich halt besser.

Jochen

Dann habe ich halt ein besseres Ergebnis.

Jochen

Und das ist ja etwas, was sich dann auch direkt bemerkbar macht.

Jochen

Denn User-Zufriedenheit oder Geld oder was auch immer man halt mehr möchte.

Jochen

Und naja, genau.

Jochen

Normalerweise, wenn ich jetzt so ein, also Machine Learning-Modelle funktionieren da wirklich besser.

Jochen

Also es gibt da schon, es gibt ja schon lange auch Wettbewerbe.

Jochen

Ich glaube, ich habe mal an einer Learning to Rank Challenge mitgemacht, das war 2009 oder so.

Jochen

Und wenn man das vergleicht, also was.

Dominik

Doch, das ist ja schon über zehn Jahre her, das ist ja schon klar.

Jochen

Ja, das ist krass, ne?

Jochen

Und es ist immer, aber was ich dann, ich dachte eigentlich, also wenn man mich damals gefragt hätte, was glaubst du, wann können Suchmaschine, ist das so ein Standard-Features von Volltext-Suchmaschinen, hätte ich gedacht, ja, so in zwei Jahren oder so können die das alle.

Jochen

Wir machen das aber immer noch nicht.

Jochen

Also es ist ja zu sehen.

Jochen

Also das ist so ein bisschen, hm.

Jochen

Naja.

Jochen

Aber wahrscheinlich braucht man ja dann doch irgendwie auch einen Markt dafür.

Jochen

Und wenn es einfach keinen interessiert, dann passiert das halt auch nicht.

Jochen

Und wenn es keinen Grund gibt, das zu implementieren, und den gibt es halt nur bei den großen Suchmaschinen und die machen das wahrscheinlich, aber die geben ihren Kram halt nicht raus.

Dominik

Ach ja, ja.

Jochen

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 der F-EDF vergleicht mit einem einfachen Machine Learning-Modell, wo man halt ein paar Signale nimmt und die kombiniert und das halt dann optimiert hat.

Jochen

Das ist halt schon wirklich deutlich besser.

Jochen

Und das heißt, man kann ja relativ viel rausholen, was die Qualität von Suchergebnissen angeht.

Jochen

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

Jochen

Ja, naja.

Dominik

Ja, also falls ihr eine neue Suchmaschine braucht, dann sagt ihr einfach mal Bescheid.

Jochen

Ja, das ist ja dummerweise auch irgendwie nicht so ganz so super live zu implementieren.

Jochen

Das kann man auch nicht so an einem Wochenende machen.

Jochen

Naja.

Jochen

Aber also ich glaube, wenn man jetzt beispielsweise Postgres nimmt oder so und halt irgendwie Django und dann Volltextsuche drauf macht und dann halt kann man natürlich auch die eingebaute Rank-Funktion nehmen, die halt auch was TFEDF-mäßiges macht.

Dominik

Und Redis dazu.

Jochen

Ja, Redis, äh, oder man kann auch mal Redis ausprobieren, muss ich mal testen.

Jochen

Dann ist man da schon, wenn man jetzt was, wenn das nochmal selber sortiert, schon relativ weit vorne, wenn man das dann richtig macht, ja.

Jochen

Genau.

Dominik

Du hast eine Sache, eben was man mit dem PAO irgendwas gesagt hattest, du wolltest du noch kurz drauf eingehen, ich weiß jetzt nicht, ob das noch richtig ist, ob das jeder schon vergessen hat.

Eine Methode zum Ranken.

Dominik

Der exponentielle der

Jochen

Du meinst die Potenzmenge, also du meinst halt, ja, also kommt drauf an, ist halt unterschiedlich für jede Seite oder für jede Suchmaschine.

Jochen

Hängt halt von ab, welche Anfragen stellen, aber was man oft sieht, ist halt, dass eine kleine Anzahl von Anfragen, eine kleine Menge von Anfragen Großteil, also eine kleine Anzahl unterschiedlicher Anfragen macht ein Großteil.

Dominik

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

Jochen

Das ist das, äh, genau, genau, das Problem hat man auch.

Jochen

Ja, ansonsten, ich weiß nicht, was oder genau, wir hatten ja so SEO schon so ein bisschen, aber da würde ich auch noch gerne, also was man halt da, du sagst, Content, es ging ja aber, genau, das, was sich Leute oft nicht klar machen, ist halt, was das heißt.

Jochen

Würdest du sagen, es geht darum, den optimalen Text zu schreiben für irgendeine Text.

Dominik

Oder wie

Jochen

würdest du sagen, was ist das, was Content gut macht?

Dominik

Also ich würde sagen, Content macht gut, dass man, zumindest wenn man Google fragt, ja, dass man Absätze hat, die tatsächlich mit Inhalten gefüllt sind, die halt eine Wortdiversität beinhalten, die zu dem Thema einigermaßen passt.

Dominik

Ja, dass halt, dass die Worte da irgendwie schon einen Kontextbezug zu haben, dass sie 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.

Dominik

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.

Dominik

Und wenn man da halt, ich weiß nicht, mehrere Seiten vielleicht zu hat zu seinem Postern, wird erst als guter Content irgendwie bewertet.

Dominik

Ich kenne tatsächlich jetzt auch nicht im Detail so die Bewertung für was ist jetzt guter Content.

Dominik

Und das bewegt sich vielleicht noch ein bisschen und ob man das jetzt alles schön mit Bildern machen muss, mit Alttexten und so, dass man halt dann das qualitativ hochwertig implementiert hat.

Dominik

Also die Implementierung ist, glaube ich, auch nicht ganz unwichtig.

Dominik

Und wenn man das aber, glaube ich, wenigstens so tut, als hätte man das qualitativ hochwertig implementiert, indem man einigermaßen so ein Taktbisches vor der Sätze zu einem Thema hinschreibt, die dann auch so aussehen, als würden die zum Thema, weil die halt da mit dem TF-RDF-Wette 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.

Dominik

Und wenn man das dann halt schafft, da so eine Content-Pyramide, wie man das schon sagt, aufzubauen, das heißt zu einem Oberthema viele verschiedene Bereiche, die eigentlich zu diesem Oberthema gehören.

Dominik

Also vielleicht machen wir das ja mit unserem Podcast zum Beispiel, ja, dass wir halt tatsächlich verschiedene Themen zu Python haben, dass aber alles Python ist und das hat irgendwie alles in Bezug zu Python, dann kommen wir tatsächlich in der Content-Pyramide Python immer wieder ein Stück weiter oben nach oben.

Dominik

Natürlich haben wir jetzt keine Texte, die man so analysieren kann bei Volltext-Suche und nachdem man ranken kann.

Dominik

Und wir haben halt nur irgendwelche Snippets oder Shownotes, mit denen man das tun kann.

Dominik

Aber ich glaube so, also das funktioniert so ein bisschen so, was halt Content bedeutet.

Jochen

Ja, aber das ist jetzt auch, würde ich eher sagen, auf einer sehr technischen Ebene.

Jochen

Ja.

Jochen

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.

Jochen

Aber ein großer anderer Teil ist halt auch ein inhaltlicher.

Jochen

Und der ist halt eben zum Beispiel, also was dann eben, ich bin wieder überrascht, man kann zum Beispiel auch unterschiedliche Seiten haben für unterschiedliche Anfragen und für unterschiedliche User.

Jochen

Man muss halt erstmal überhaupt rauskriegen, was sind das für Leute, die auf meine Seite kommen.

Jochen

Und möglicherweise gibt es da unterschiedliche Leute.

Jochen

Möglicherweise stellen die unterschiedliche Suchanfragen.

Jochen

Und dann kann es zum Beispiel gut sein, das ist auch etwas, das kennen bestimmt viele Leute.

Jochen

Wenn man sucht nach irgendwas, dann landet man auf einer Seite von irgendeiner Firma, die irgendwas anbietet oder so.

Jochen

Und scrollt da die ganze Zeit rum und denkt sich so, was wollen die mir eigentlich erzählen?

Jochen

Stock-Fotos 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.

Dominik

Ja, das ist dann eher.

Jochen

Das hat man oft, ne?

Jochen

Aber die Frage ist, warum müssen die eigentlich allen die gleiche Landingpage zeigen?

Jochen

Das müssen die doch gar nicht.

Jochen

Aber das kommt dabei raus, wenn du sagst, okay, ich mache eine Landingpage für alle die gleiche, dann kriegst du halt sowas.

Jochen

Aber das müsste eigentlich gar nicht sein, sondern das, was die sich überlegen müssten, ist halt, okay, wenn jetzt jemand nach bestimmten technischen Geschichten sucht, dann geben wir dem doch.

Dominik

Hintergrundnabel blau.

Jochen

Ja.

Jochen

Nehmen wir dem vielleicht noch eine Seite, wo tatsächlich steht, was wir machen.

Jochen

Und wenn jetzt irgendwie, keine Ahnung, eher ein businessorientierter User halt nach den üblichen Buzzwords sucht oder so, den gut, den kannst du ja dann vielleicht irgendwie klappen, vielleicht kriegst du den irgendwie mit Stock-Fotos glücklich gemacht.

Ich weiß auch nicht warum, aber.

Dominik

Du bist überhaupt dazu, dass wir diese Datenkrake brauchen, wenn wir damit Geld verdienen wollen.

Dominik

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 einen tollen Content zeigt, sondern dass man den dann, also wenn wir jetzt bei der ganzen Geldmaschine ausgehen, den dazu bringt, dass der da irgendwas kaufen soll.

Dominik

Der für den Kapitalismus halt so ist, der möchte dich emotionalisieren und dir das zeigen, was du willst.

Jochen

Ja, ich weiß, ich kann, aber ich meine, jetzt so nur rein aus dem Suchmaschinenkontext, was man jetzt damit macht, ist ja nochmal eine andere Frage.

Jochen

Klar, will ich eventuell Leute hinterher, will ich ja irgendwie, die konvertieren zu was auch immer, Umsatz.

Dominik

Die konvertieren zu.

Dominik

Das ist total schön, wenn man von Leuten redet, wir möchten die gerne konvertieren.

Dominik

Wir möchten unsere Hörer übrigens konvertieren zu besseren Pythonisten.

Jochen

Genau, man muss sich halt überlegen, was man für Ziele eigentlich erreichen will.

Jochen

Aber damit das überhaupt funktionieren kann, damit ich überhaupt die Chance kriege, muss ich ja irgendwie vielleicht, oder macht es vielleicht Sinn, 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.

Jochen

Und das passiert oft nicht.

Jochen

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.

Jochen

Ich muss ja jetzt nicht irgendwie wissen, wer das ist.

Jochen

Das interessiert mich gar nicht.

Jochen

Ich weiß doch, wonach die gesucht haben.

Jochen

Ja, warum zeige ich denen alle das gleiche?

Jochen

Das macht überhaupt keinen Sinn.

Jochen

Aber es gibt die Vorstellung, dass das halt so sein muss, woher auch immer die kommt.

Jochen

Und dass es halt dann so ein eben technisches Ding ist, welche Farbe nehme ich da oder welche Fotos, wie ist der Anteil von Fotos zu Text, dass das dann irgendwie gut macht.

Jochen

Aber wenn da nicht steht, was mich interessiert, dann kriege ich das nicht wieder gut gemacht durch irgendeine Farbe.

Jochen

Das ist einfach, da hast du mich schon verloren im Grunde.

Dominik

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äenvertisiert und gefiltert ist, dass deine eigene Blase so gut zu dir passt, dass du da genau das findest, was du machst.

Jochen

Es müsste sich jemand Gedanken drüber gemacht haben.

Jochen

Das ist halt das Entscheidende.

Jochen

Jemand muss sich zum Beispiel angeguckt hat.

Dominik

Es gibt eine bessere Korantierung durch den Suchalgorithmus.

Nee.

Jochen

Jemand sollte sich überlegt haben, zum Beispiel, wir sehen jetzt gerade bei dem, wir sind das Dokument, nicht, wir sind die Suchmaschine.

Jochen

Was Google macht, ist nochmal ein anderes Ding, aber.

Jochen

Da müsste sich jemand überlegt haben, okay, wonach suchen die Leute?

Jochen

Wenn die Leute auf der Seite landen, wonach haben die gesucht, ist das wirklich das, was sie suchen?

Jochen

Wenn sie danach gesucht haben, kriegen die Seite, wäre es nicht sinnvoll, ihnen eine andere Seite zu zeigen.

Jochen

Ja, solche Sachen.

Jochen

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

Jochen

Weil irgendwie die Vorstellung ist, das ist wie in der physikalischen Welt, du hast halt ein Schaufenster und das ist halt für alle gleich.

Jochen

Aber das muss man ja gar nicht so machen unter Umständen.

Jochen

Aber das ist halt sehr schwer zu vermitteln.

Jochen

Aber wenn du jetzt zum SEO gehst, der so wie Content-Strategie machst oder so, dann sagt ihr dir vielleicht einfach, boah, kann das auch anders machen.

Jochen

Aber wenn du jetzt zu einer technischen SEO-Agentur gehst, die dir sagst, okay, ich verkaufe dir so und so viel Backlin, dann hilft dir das.

Jochen

Also sagen wir 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 jedenfalls üblicherweise mitbekomme, immer sehr vernachlässigt.

Jochen

Die Leute kümmern sich immer um technische Details und dann oft auch um Sachen, die eigentlich fragwürdig sind und lassen da eine ganze Menge gute Gelegenheiten einfach so liegen.

Ja, aber.

Dominik

Der klingt halt, als wäre es auch, wenn nicht das zu implementieren würde.

Jochen

Ja, ist es.

Jochen

Ist es tatsächlich.

Jochen

Also das ist halt auch der Grund, warum es keiner macht.

Dominik

Ja, genau, und was die Leute, die das halt implementieren offen 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.

Dominik

Das vielleicht auch so ein Problem.

Dominik

Ja, aber die großen Kunden, hast du schon mal gesehen, also dass so wirklich so diese Pages wirklich dann sich ändern, je nach Suchanfrage?

Jochen

Ja.

Wo?

Jochen

Nein, du packst einfach, das ist überhaupt nicht schwer.

Dominik

Nein, ich sage nur, hast du ein Beispiel, wo du sagst,

Jochen

ändert sich nicht nach Suchanfrage, sondern du hast halt unterschiedliche Pages im Google-Index.

Jochen

Und bei unterschiedlichen Anfragen werden unterschiedliche Seiten gefunden.

Dominik

Ja, okay, okay, okay.

Jochen

Kannst du machen.

Jochen

Das ist gar kein Problem.

Dominik

Ja, das habe ich dann.

Dominik

Ja, okay, das ist natürlich, ja.

Dominik

Ja, also man hätte quasi für jedes schöne Keyword-Kombination seine eigene Landedpage raus.

Jochen

Ja, oder die muss nicht für jede Kombination, aber du musst halt gucken, also man würde damit anfangen zu gucken, was suchen die Leute eigentlich?

Jochen

Mit welchen Anfragen landen sie?

Jochen

Oder auch, wenn ich mich jetzt dafür interessiere, was würde ich denn suchen und wie schaffe ich es dann, dass ich dann auch da gerankt werde.

Jochen

Und dieser Schritt, das ist ja das Allersimpelste, dass man halt anfängt, sich zu überlegen, okay, wie kommen Leute eigentlich hin, das machen die meisten schon 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 denen jetzt hochgerankt?

Jochen

Und dann packen sie da irgendwie komische Wörter rein oder kaufen Links oder machen irgendwie seltsame Dinge, ändern die Farben, verstecken weißen Text auf weich im Hintergrund.

Dominik

Ja, oder kaufen hell Hits bei Google oder sowas noch.

Jochen

Und wundern sich dann, dass die Leute irgendwie, wenn sie halt quasi da landen, dann irgendwie enttäuscht sind.

Dominik

Ja, aber diese ganzen Tricksdaten mit den Sachen verstecken hinter weißem Hintergrund und mit den extra Keywords und so viel Links, das hat, glaube ich, Google mit den ganzen neuen Pads alle raus.

Jochen

Die sind da sehr gut, also das wird alles nicht so richtig richtig funktioniert.

Dominik

Ja, es wird sogar bestraft, also du wirst tatsächlich abgerankt, wenn du sowas machst noch.

Dominik

Also wenn die solche Methoden finden, die können die identifizieren, dann schmeißen sich raus, das wird bestraft.

Jochen

Würde ich jetzt, wenn ich jetzt nicht genau, worum man das machen sollte, weil im Grunde ist es ja, ich würde sie Google werden ignorieren, weil.

Dominik

Ich habe gehört, dass das tatsächlich drin steht.

Dominik

Ich weiß nicht, was für Google Dolphin oder was war.

Warum haltet das denn für Google?

Dominik

Ja, dass halt nur noch Sachen gerankt werden, die halt diesen Content-Qualitätsding besser machen können.

Dominik

Das heißt, weil die halt auf diese Qualitätssachen.

Dominik

Warum?

Dominik

Und Leute, die halt dann versuchen, mit Keywords das einzubinden, die legen nicht so viel Wert auf guten qualitativ hochwertigen Content.

Jochen

Ja, aber damit, dann würdest du sagen, du kannst eine Regel aufstellen, die funktioniert.

Jochen

Du sagst, Leute, die irgendwie so shady Geschichten machen oder die halt die falsche, sich halt von dem falschen See von der falschen SEO-Agentur übers Ohr haben hauen lassen, die sind halt prinzipiell nicht gut.

Genau.

Jochen

Da weiß ich nicht, ob diese Regel wirklich stimmt.

Jochen

Ich würde tatsächlich das eher dann aus Trainingsdaten lernen lassen, ob das so ist oder nicht.

Jochen

Weil diese Annahme muss ja nicht richtig sein.

Jochen

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-Auswahl-Kompetenz und greift da halt ins Klo.

Jochen

Da würde ich den gar nicht dafür bestrafen wollen, unbedingt dafür, dass halt seine SEO-Agentur kacke ist.

Jochen

Sondern ich würde das ignorieren.

Okay, interessant.

Dominik

Aber ich glaube, also Google hat das tatsächlich gemacht, das steht irgendwie in den Rules da drin.

Dominik

Aber ja.

Jochen

Ja, ich weiß nicht.

Dominik

Dann sollte man vielleicht nochmal drüber nachdenken, dass es sowieso, also ja, ja gut, aber ich hoffe, jetzt so Restaurants bewerten über Wax.

Dominik

Aber das haben wir, glaube ich, heute nicht mehr die Zeit für und das ist auch nicht unser Thema.

Dominik

Warum, wieso weshalb dann welche Sternchen vergeben werden sollen, sollten, sollten, nicht sollten.

Jochen

Ja, aber genau, Sumaschinen.

Jochen

Haben wir noch irgendwie ein großes Thema oder so, was da drin ist, was wir noch gar nicht angeschnitten haben oder was irgendwie

Dominik

ich glaube, die großen Sachen haben wir einigermaßen durch.

Dominik

Wir haben so ein bisschen erklärt, wie es funktioniert, was für Algorithmen dahinter stecken.

Dominik

Wir sind jetzt nicht ganz so detailliert eingegangen auf diese ganze mathematische Komponente von den Wertberechnungen, aber das ist vielleicht auch einfach hier eine Stelle too much.

Dominik

Wir haben vielleicht noch wieder mal, leider, ein bisschen wenig erzählt, wie man das in Python macht, also außer wir gesagt haben, dass das irgendwie so Pyleusinen und Wusch gibt, habe ich jetzt und natürlich Postgres und damit das mal in Dangerous implementieren kann.

Jochen

Ja, also aber 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.

Jochen

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.

Jochen

Wenn man halt eben diese ganze NumPy, Sci-Pi, Machine Learning-Geschichte mit dranhängen hat.

Jochen

Das heißt, selbst 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 handgedenkelten Listen schnell zwänken, das geht mit Python wahrscheinlich sehr, sehr gut.

Jochen

Und bei anderen Sprachen hätte man da wahrscheinlich so ein bisschen.

Dominik

Naja, aber man hört sich an, das braucht man auf jeden Fall erstmal Content, bevor man irgendwie eine vernünftige Suche implementiert.

Jochen

Ja, tatsächlich, das ist wahrscheinlich auch nicht so schlecht.

Dominik

Weil sonst kann man ja selber aussuchen, was da da rauskommt.

Jochen

Ja, und genau, und das ist halt.

Jochen

Ich weiß jetzt gar nicht, ob es ein großartiges anderes, also ist das alles Web heutzutage.

Jochen

Ja, ne?

Jochen

Gibt es irgendwie noch eine.

Dominik

Es gibt bestimmt noch irgendwelche Studierendatenbanken, wo man dann nach wissenschaftlichen Texten suchen kann.

Dominik

Oder die Juristen sind sehr gerne dabei mit irgendwelchen Volltext-Sachen, irgendwelchen Gesetzestexten und Urteilsverkündungsgeschichten, was welches.

Dominik

Aber das wird auch alles eher mehr oder weniger webbasiert laufen.

Jochen

Ja.

Dominik

Es gibt bestimmt noch mehr, wenn ich noch genug nachdenke.

Jochen

Ja, aber es ist, glaube ich, heutzutage eigentlich das meiste Web, was man da so macht.

Jochen

Ja, oder selbst wenn es irgendwie auf Mobilgerätten ist oder so, dann wird man wahrscheinlich eine API-Anfrage machen und also letztlich wird es auch wieder App sein.

Ja.

Jochen

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.

Jochen

Zum Beispiel einfach einen Standardkorpus von irgendwie oder mehr irgendwelchen Dokumenten halt in eine Postgres reinhauen, in Redis reinhauen, in eine 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.

Dominik

Gut, dass du das jetzt bei einer Stunde 30 gesagt hast, wo vielleicht einige Hörer schon eingeschlafen sind.

Dominik

Aber das Versprechen ist aufgeschrieben.

Jochen

Ja, das ist vielleicht genau.

Jochen

Dann muss ich, sag ich nochmal Bescheid.

Jochen

Also ich meine, es ist auch teilweise nicht so einfach.

Jochen

Bei Django ist es so, dass halt, wenn man da einfach nur das macht, was in der Dokumentation steht, funktioniert es auch nicht so richtig.

Jochen

Das ist schon so ein bisschen hakliger.

Jochen

Aber das muss ich mir nochmal auch nochmal genau angucken.

Dominik

Ja, du fragen, dass ihr Fragen dazu habt, stellt mich die gerne wieder per E-Mail.

Dominik

Hallo.python podcast.de.

Dominik

Ich würde sagen, wir sind aber jetzt mit der Suche so quasi durch und wollten jetzt noch Pick der Woche machen und so.

Ja, ja.

Dominik

Oder hast du noch was, was du zur Suche sagen willst?

Ja.

Gut.

Dominik

Ja, dann ich nehme jetzt deinen Pick weg.

Dominik

Den musst du später machen.

Dominik

Also Armin Ronacher von Flask, der Mensch, der Creator, hat etwas Schönes vorgestellt und hat er einen kleinen Patch eingebaut.

Dominik

Das heißt, er nimmt einfach die Build-Hins und packt da Drachen dran.

Dominik

Und zwar True, False und Null, jeweils in klein geschrieben und setzt sie auf True, False und None, äh, null.

Dominik

Und dann kann man einfach JSON lesen.

Ja, beziehungsweise halt einpasten und

Dominik

JSON und ist direkt ein Dictionary-Object.

Dominik

Das ist schon relativ interessant.

Ist schon

eine gute.

Jochen

Ich wusste gar nicht, was man das so machen kann und dachte mir so, das geht, aber cool.

Dominik

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.

Jochen

Ja, ja.

Dominik

Es ist security völlig überbewertet.

Dominik

Aber ja, es ist sehr interessant und lustige Sachen sind da möglich, wenn man was wie die Build-Ins einfach überschreibt, ja.

Dominik

Also ich habe diesmal tatsächlich kein Modul zum Picken, aber ich habe ein wunderschönes GitHub-Repository entdeckt, was die Algorithms heißt.

Dominik

Und da gibt es einen Folder mit Python.

Dominik

Da gibt es quasi alle Algorithmen, die man so irgendwie mal für Python gebaut hat.

Dominik

Die sind jetzt alle nicht perfekt implementiert oder besonders schnell, aber man sieht so ein bisschen, wie das Prinzip dahinter steckt.

Dominik

Also ob ihr jetzt Suchalgorithmen habt, Suchalgorithmen, ja, oder Sortieralgorithmen oder für Wetbringing 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.

Dominik

Das steht alles drin.

Dominik

Zeit, Verschlüsselung, Kompression.

Dominik

Könnt ihr euch alles mal angucken, ist eine tolle Bibliothek.

Dominik

Einfach so Algorithms Python on GitHub.

Dominik

Sehr interessant.

Dominik

Achso, und was ich noch fast ganz vergessen habe, wir haben ja letztes Mal über Environments gesprochen.

Dominik

Und ich habe es tatsächlich geschafft, nach ein bisschen Struggle, meine Environment, ich habe ja eine große Windows-Entwicklungs-Environment, auf umzustellen auf PyEntwon Poetry.

Dominik

Und habe das auch auf GitHub mal dokumentiert, wie das denn eigentlich geht.

Dominik

Falls ihr das irgendwie vorhabt, ich empfehle da, wenn ihr das mit Poetry machen wollt, schmeißt alles Python, was ihr schon drauf habt, einmal weg, weil es sonst Hakeligkeiten mit eurem Pfad geben kann.

Dominik

Dann müsst ihr vielleicht auch einmal komplett aufräumen und putzen.

Dominik

Weil die Inventierung PyNWin, das so ein bisschen komisch löst, die wird eure Windows Libraries mit einem grafischen Installer dann installieren, also die Python-Version, dass das ein bisschen anstrengend, aber dann passiert das alles automatisch und ihr habt diesen ganzen Struggle nicht und dann könnt ihr Poetry und PyN wunderbar kombinieren.

Dominik

Auch mit eurer PowerShell.

Dominik

Es geht aber leider nicht so gut mit Toku.

Dominik

Also nehmt nicht die Toko-Version, sondern versucht das aber das GitHub-Repository zu ziehen.

Dominik

Kann ich empfehlen.

Dominik

Ich habe da auch ein paar Skürdschule geschrieben, die es automatischer machen können.

Dominik

Wollte ich nochmal so kurz für die Menschen, die tatsächlich noch mit Windows arbeiten machen.

Dominik

Ich habe in NixOS reingeschaut, das gefällt

mir richtig.

Jochen

Okay.

Jochen

Ja, das ist auch eine sehr coole Idee.

Dominik

Ja, dann bin ich aber noch dabei, meine Python-Implementierung zu bauen und mal gucken, ob ich das so weiterführe.

Dominik

Ja, aber das hatte relativ wenig mit Suchmaschinen zu tun.

Dominik

Aber das war so für den Pick der Woche.

Dominik

Haben wir irgendwas vergessen?

Jochen

Ja, mir ist jetzt doch eingefallen nicht.

Jochen

Also in dem Moment, wo ich gesagt habe, so haben wir nicht noch irgendwas vergessen.

Jochen

Ich hatte schon das Gefühl, wir haben irgendwas vergessen und ja, haben wir auch, aber egal.

Jochen

Und zwar gibt es halt noch einen ganz nicht unerheblich großen Teil Volltextsuche, wo es nicht um Dinge geht, die jetzt ja so traditionellerweise da so, also dass man Querys hat, die man so gut in Tokens zerlegen kann, oder wo man halt Tokens sucht, sondern solche Sachen wie Autocomplete in einer Suchbox hat.

Jochen

Ja, okay.

Jochen

Oder wo man halt einfach nur ein paar Buchstaben hat und möchte das halt finden.

Jochen

Oder man möchte halt irgendwie ein Teil von einem Wort finden, irgendwo drin.

Jochen

Und das ist halt nochmal so ein bisschen anderes Problem und braucht halt ein bisschen andere Datenstrukturen dafür.

Jochen

Und ja, das vielleicht machen wir das auch einfach mal in einem anderen Sinne.

Jochen

Okay, machen wir dieses Fass nicht nochmal auf.

Jochen

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 ist ja auch Volltextuche und das ist nur ein bisschen anders.

Ja, okay.

Jochen

Naja.

Dominik

Ja, dann das nächste Mal.

Dominik

Also wenn ihr Fragen dazu habt, dann gerne wieder an Hallo-Pythonpodcast.de, das haben wir schon gesagt.

Dominik

Mögt uns und folgt uns auf allen Dingen, die wir so posten.

Dominik

Schreibt uns, freut uns auf euch.

Dominik

Bleibt uns gewogen, hört uns immer morgens, mittags, nachts, abends.

Dominik

Und ja, bis zum nächsten Mal.

Jo, alles klar.