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

Advertisements

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

WiQuery – hübsche Widgets mit Wicket

Viele Java-Entwickler im Web-Umfeld kennen wahrscheinlich das Problem, mit wenig Aufwand soll eine einfache aber auch hübsche Webanwendung erstellt werden.

Während man mit ein bisschen Wicket-Erfahrung schnell die notwendige Logik auf und zwischen den Webseiten programmiert hat, ist ein nettes Design nicht ganz so einfach zu erreichen. Natürlich möchten wir gerne diese Wohlfühl-Atmosphäre schaffen: abgestimmte Farben, weiche Farbverläufe, runde Ecken und schicke Effekte. Und diese stylischen Web2.0-Widgets wären ja auch toll: Autocompletion, Datepicker, Dialog, Accordion, Tabs, Slider, Progressbar…

Mit einer passenden JavaScript-Bibliothek kommen wir unserem Ziel auf jeden Fall näher. Hier mal einige Demos zu den verbreitesten Bibliotheken: JQuery-UI, Dojo, YUI, MooTools. Das Einbinden der vielen hübschen Widgets mit einer JavaScript-Bibliothek hat für Java-Entwickler den Nachteil, dass die Komplexität der Webanwendung erheblich steigt. Am liebsten würden die meisten Java-Entwickler natürlich alles mit Java-Code umsetzen (à la Swing) und müssen sich bei Wicket schon mit der Trennung von Java-Code und HTML-Code auseinandersetzen. Jetzt kommt auch noch JavaScript- und CSS-Code dazu.

Weiterlesen