Lucene: Volltextsuche leicht gemacht

Wenn man in einem Datenbestand bestimmte Daten sucht, wird man zumeist die Möglichkeiten der jeweils eingesetzten Datenbank nutzen. Sobald man jedoch eine Volltextsuche benötigt, wird es mit einer reinen Datenbanklösung kompliziert. Dann sollte man im Java-Bereich einen Blick auf Apache Lucene und Apache Solr werfen.

Während es sich bei Lucene um eine Java-Bibliothek für Volltextsuche handelt, nutzt die Webanwendung Solr die Funktionen von Lucene und bietet komfortable Anfrage- und Verwaltungsmöglichkeiten über HTTP-Schnittstellen. In diesem Artikel stelle ich ein kleines Projekt mit Lucene vor, allerdings sollte man vor dem Einsatz von Lucene abwägen, ob sich die Anforderungen nicht mit Solr noch einfacher realisieren lassen. Lucene bietet für die Volltextsuche eine Vielzahl von Funktionen an:

  • wie DB-Suche: Felder, boolsche Ausdrücke, Wildcards: title:“rot“ AND desc:“Schuh“
  • Fuzzy Search (Unscharfe Suche): mahlen -> mahlen, malen, Wahlen
  • Stemming von Wörtern (Verwendung des Wortstamms): rote Schuhe -> rot, Schuh
  • Verstärkungsfaktoren (z.B. Produkt): Name*4, Eigenschaften*2, Beschreibung*1
  • Ignorieren von ‚Stopwords‘, z.B: einer, eine, eines, der, die“, das, wie, ohne
  • Unterstützung von vielen Sprachen: Klasse StandardAnalyzer ersetzen durch Klasse GermanAnalyzer für deutsche Sprache
  • vieles mehr

Weiterlesen

Daten von Webseiten scrapen mit ScraperWiki

ScraperWiki ist ein Internetdienst, der Daten aus verschiedenen Quellen des Internets zusammenführt. Dabei betonen die Macher von ScraperWiki den kollaborativen Charakter ihres Dienstes. Ein Journalist kann beispielsweise eine Anfrage stellen, dass er bestimmte Daten für einen Artikel benötigt, die so zusammengeführt im Internet nicht verfügbar sind. Programmierer können sich dieser Anfrage widmen und ein entsprechendes Scraper erstellen, das die Daten von verschiedenen Webseiten scrapt und zusammenführt. Zusätzlich bietet ScraperWiki Visualisierungen, sogenannte Views, für die Daten an.

Der Programmierer wählt für das Erstellen eines Scrapers zwischen den Programmiersprachen Python, PHP, Ruby und neuerdings auch JavaScript. Die gesammelten Daten werden in einer Datenbank gespeichert und können als CSV, JSON oder SQLite Datenbank heruntergeladen werden. Zusätzlich bietet ScraperWiki eine Abfrage-API per HTTP. Die Abfrage lässt sich per SQL ausdrücken und die Daten stehen dann in verschiedenen Formaten zur Verfügung, wie JSON, CSV, HTML-Tabelle und RSS. Damit die Daten in der Datenbank aktuell bleiben, kann man bei ScraperWiki mit einem Timer festlegen, wie oft das Scraping der Daten durchgeführt werden soll.


Weiterlesen