Mein erstes Symfony Bundle – JityTagGeneratorBundle

, Generator, Jity, TagGeneratorBundle, Tags

Als Teil des Jity Projektes, ist die Idee zu einem universellen Tag-Generator entstanden, der beliebige Texte verschlagworten kann. Da der Algorithmus, der zum gewünschten Ergebnis führt, für das Anwendungsgebiet vom jeweiligen Nutzer zusammengestellt wird, ergibt sich größtmögliche Flexibilität. Möglich wird das, durch die Implementierung einer Chain of responsibility, die eine Anfrage vom Nutzer, durch von diesem definierte Filter leitet.

Die Idee zum Tag-Generator

Mit der Hilfe von Schlagworten, lässt sich soziemlich jeder Inhalt auf seine Quintessenz komprimieren und damit reichhaltigere Metadaten erzeugen. Das ist zum einen für eine mögliche Search-Engine wie Sphinx oder Solr, aber auch für eine schnellere Navigation auf einer Seite, relevant. Ein Anwender, dem ein Themengebiet gefällt, wird intuitiv auf ein Schlagwort klicken, um mehr zum Thema zu erfahren. Des Weiteren lässt sich SEO-technisch viel mit Metadaten anstellen.

Außer diesen Fakten ist das taggen von Inhalten ein recht müßiger Prozess, den man zu einem gewissen Grad automatisieren kann. Und damit war die Idee zum Tag-Generator geboren.

Die Umsetzung

Wie eingangs erwähnt, verwende ich für die Architektur des Projektes die Chain of responsibility. Dabei wird der Generator mit jeweils einem Formater und einem Splitter initialisiert. Diese Komponenten dienen zum einen, der Aufbereitung (z.B. Die Entfernung von Satzzeichen) und zum anderen zur korrekten Aufspaltung des Textes, der verschlagwortet werden soll, in nutzbare Tokens.

Als Ergebnis dieses Prozesses erhält man eine unbewertete Sammlung aller möglicher Tags. Für die Weiterverarbeitung dieser Sammlung, stehen eine Hand voll vordefinierter Filter zur Verfügung, die sich in einer selbst zusammenstellbaren Reihenfolge auf die besagte Sammlung anwenden lassen. Diese Filter lassen sich sowohl für die Bewertung als auch für das Entfernen von Tags verwenden.

Mit unter stehen Filter, die das Vorkommen der Tokens im Text bewerten, die Wörterbücher für die Bewertung heranziehen oder die Länge und Schreibweise der Tags berücksichtigen, zur Verfügung. Nachfolgend ist eine Liste der vordefinierten Filter:

Camelcase, Capitalized, Dictionary, Length, Lowercase, Occurrence, Regex, Score, ScoreGroup, Uppercase

Das Resultat

Letztendlich habe ich ein Symfony Bundle, das sich über Composer beziehen lässt, erstellt. An dieser Stelle möchte ich die weiterführenden Links des Projektes nennen:

Ich hoffe wie immer sehr, dass ich hiermit etwas nützliches beigetragen habe und würde mich über Feedback freuen. 😃


Vorheriger ArtikelNächster Artikel