Lucene, Open Source und die Kosten des Experimentierens
Vor einiger Zeit war ich in einem Unternehmen, das erwog, einen kommerziellen Anbieter durch eine Lucene/Solr-basierte Lösung zu ersetzen. Das Unternehmen hatte viel Geld für die kommerzielle Lösung bezahlt und wir diskutierten über die (Un-)Vorzüge des Systems. Die Hauptmotivation für den Kauf war damals, dass sie ein Produkt zum Einschweißen wollten, hinter dem ein Unternehmen stand (sie kauften ihr System vor Lucid), und Geld spielte für sie keine große Rolle, zumindest nicht damals. Angesichts ihrer damaligen Kriterien war der Kauf in vielerlei Hinsicht sinnvoll. Seit dem Kauf haben sich jedoch einige Dinge geändert. Erstens ist die Wirtschaft nicht mehr das, was sie einmal war, und die Lizenzgebühr entspricht in etwa einem guten Teil der Gehälter. Und zweitens, fast schon ironisch, da sie dachten, sie wollten eine „Schrumpffolie“, konnten die Verpackungen des Anbieters nicht alle ihre Anforderungen erfüllen, obwohl klar war, dass die benötigten Informationen im Index unter der Haube enthalten waren. Sie baten den Anbieter also vor allem darum, einen Teil des Produkts zu öffnen, damit sie auf einer niedrigeren Ebene auf den Index zugreifen konnten, was ihnen mehr Möglichkeiten zum Experimentieren bieten würde. In ihrem Fall gelang es ihnen, den Anbieter davon zu überzeugen, denn es handelte sich um ein ziemlich großes Unternehmen.
Dies brachte mich dazu, über eine der wirklich großartigen Eigenschaften von Lucene (und Open Source) nachzudenken, auf die sich die meisten Leute nicht konzentrieren, weil sie sich mehr für die vordergründigen Kosten wie Lizenzen, Support, Schulungen usw. interessieren (was zum größten Teil zu Recht der Fall ist), die sich leicht mit Dollarzeichen versehen und im Voraus budgetieren lassen.
Die Idee, von der ich spreche, nenne ich „Cost of Experimentation“ (COE), und sie ist etwas, das ich bei vielen Menschen bei der Implementierung der Suche beobachtet habe und das meiner Meinung nach (bitte fügen Sie Ihre Meinung hinzu) hauptsächlich auf mindestens zwei Dinge zurückzuführen ist:
1. Die Suche ist per Definition subjektiv. Sprache ist zweideutig. Abfragen sind subjektiv. Die Indizierung ist subjektiv. Folglich sind auch die Ergebnisse subjektiv.
2. Das Nachdenken über Daten unter dem Gesichtspunkt der Suche befreit Ihren Geist oft von der Starrheit normalisierter Daten. Mit anderen Worten: All diese freien, unstrukturierten Texte regen zu innovativem Denken an.
Die Grundidee hinter dem COE ist, dass Sie nicht wissen, was Sie nicht wissen. Und um herauszufinden, was Sie nicht wissen, müssen Sie einige Dinge ausprobieren.
Nehmen wir an, Sie haben für Ihr Projekt eine Lizenz von Anbieter X gekauft. Sie und die Berater des Anbieters leisten hervorragende Arbeit und die Anwendung ist ein großer Erfolg. Sie werden zum Suchguru des Unternehmens gesalbt und alles ist gut. Die Anwendung ist sogar so erfolgreich, dass sie im Unternehmen eine ganz neue Innovationsrunde auslöst. Die Mitarbeiter haben alle möglichen Ideen, wie man die Dinge verbessern kann, und einen Haufen neuer Ideen, wie man auf die Informationen zugreifen kann (ich habe das schon an mehr als einem Ort erlebt). Sie fragen zum Beispiel, ob Anbieter X eine standortbezogene Suche oder Facettierung oder Named Entity Recognition oder eine andere Funktion anbieten kann. Sie sehen also auf dem Produktblatt des Anbieters nach, dass er eine oder mehrere dieser Funktionen anbietet, und dann rufen Sie pflichtbewusst Ihren Vertriebsmitarbeiter an und sagen: „Ich brauche X, Y und Z“, woraufhin seine Augen aufleuchten und er Ihnen sagt, dass das $, $$ und $$$ kosten wird.
Bumm! Sie wurden gerade von den hohen Kosten für Experimente getroffen. Da Sie an ein Lizenzgebührenmodell gebunden sind, können Sie nur dann experimentieren und innovativ sein, wenn Sie weitere Lizenzgebühren zahlen, um Add-ons zu erhalten, die Ihr Problem (vielleicht) annähernd lösen. Oder, was noch schlimmer ist, der Anbieter hat noch nicht einmal eine Lösung und Sie müssen entweder darauf warten, dass er sie entwickelt und zur Verfügung stellt, oder seine Berater dafür bezahlen, sie zu entwickeln. Vielleicht könnten Sie die Lösung selbst entwickeln, aber was passiert, wenn Sie Zugriff auf Low-Level-APIs benötigen, die der Anbieter nicht zur Verfügung stellt?
Vergleichen Sie dies mit einer Open Source-Lösung wie Lucene und Solr. In den meisten Fällen sind die einzigen Kosten für das Experimentieren Ihre direkten Arbeitskosten, die Sie bei einem kommerziellen Anbieter ohnehin hatten. In vielen Fällen gibt es für Lucene und Solr eine Zusatzkomponente, die sofort nach dem Auspacken funktioniert. Und wenn es keine Lösung gibt, können Sie sie selbst entwickeln und müssen sich keine Gedanken darüber machen, dass Sie einen Low-Level-Zugang zu undokumentierten APIs benötigen, denn Sie haben den Quellcode und können ihn nach eigenem Ermessen verwenden.
Ich persönlich habe im Laufe meiner Karriere auf verschiedene Weise mit Lucene und Solr experimentiert. Ob es sich um ein forschungsorientiertes Fragebeantwortungssystem handelt, um ein arabisch-englisches sprachübergreifendes Suchsystem, um das Herumspielen mit Klassifikatoren oder einfach nur um die Betrachtung von Co-Occurrence-Informationen für die Sentiment-Analyse, Lucene und Solr haben es mir ermöglicht, ungetestete Ideen in die Realität umzusetzen. Ich möchte Sie ermutigen, Ihre Daten zu nehmen, sie in Lucene/Solr einzugeben und zu sehen, was damit möglich ist. Sie werden erstaunt sein, was Sie alles finden können!