-
Notifications
You must be signed in to change notification settings - Fork 0
Tag Recommendation
Durch Tag Recommendations soll es ermöglicht werden, zu einer Liste von Tags eine weitere Liste von vorgeschlagenen Tags zu erhalten. Diese Liste an vorgeschlagenen Tags enthält Tags, welche der Nutzer höchstwahrscheinlich zusätzlich zu den bisherigen Tags verknüpfen möchte. Berechnet wird diese Liste anhand der Tag Counter, welche angeben, wie oft Tags miteinander genutzt wurden.
Die Berechnung der vorgeschlagenen Tags findet in der Klasse "TagRecommendationCalculator" statt und durchläuft dabei folgende Schritte:
- In der Datenbank werden anhand von angegebenen Ids jene Tags gesucht, auf dessen Basis die Vorschläge berechnet werden sollen.
- Für jeden Tag aus der Parameterliste wird nun geschaut, mit welchen anderen Tags dieser zusammen häufig genutzt wird. Dies geschieht anhand der Tag Counter.
- Nachdem nun für jeden Tag aus der Parameterliste bekannt ist, welche Tags in Verbindung häufig vorkommen, werden die verschiedenen Listen der meistgenutzten Tags zu einer Einzigen verknüpft. Diese Liste enthält nun Tags mit je einer Wertung, wie häufig dieser in Verbindung mit allen anderen Tags aus der Parameterliste genutzt wurde.
- Schlussendlich wird die Liste an vorgeschlagenen Tags absteigend nach der Häufigkeit in Verbindung mit anderen Tags sortiert und ab einer bestimmten Anzahl abgeschnitten. So kann beispielsweise für bestimmte fünf Tags geschaut werden, welche weiteren zehn Tags für den Nutzer am ehesten in Frage kommen.
Die Tag Vorschläge können über einen API Aufruf auf die URL "tags/search/tagRecommendations?tagIds=id1,id2" bezogen werden. Dabei werden in der URL eine Reihe von Tag-Ids übergeben, welche den Tags gehören, auf dessen Basis eine Liste von vorgeschlagenen Tags generiert werden soll. Bei der API-Schnittstelle handelt es sich hierbei um einen Level 3 REST Controller, welche den vorgeschlagenen Tags als Ressource Links anfügt. Eine Antwort der API könnte beispielsweise wie folgt aussehen:
{
"_embedded" : {
"tags" : [ {
"id" : "bf3b9125-740b-4d09-910d-6b34c42d1f23",
"tagName" : "informatik",
"_links" : {
"self" : {
"href" : "http://localhost:9003/tags/bf3b9125-740b-4d09-910d-6b34c42d1f23"
},
"tag" : {
"href" : "http://localhost:9003/tags/bf3b9125-740b-4d09-910d-6b34c42d1f23"
}
}
}, {
"id" : "9ad36352-8a0b-455c-8126-fd156a249622",
"tagName" : "microservices",
"_links" : {
"self" : {
"href" : "http://localhost:9003/tags/9ad36352-8a0b-455c-8126-fd156a249622"
},
"tag" : {
"href" : "http://localhost:9003/tags/9ad36352-8a0b-455c-8126-fd156a249622"
}
}
}, {
"id" : "f39e7673-0da5-4b94-9f6b-adf27286ae46",
"tagName" : "ddd",
"_links" : {
"self" : {
"href" : "http://localhost:9003/tags/f39e7673-0da5-4b94-9f6b-adf27286ae46"
},
"tag" : {
"href" : "http://localhost:9003/tags/f39e7673-0da5-4b94-9f6b-adf27286ae46"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9003/tags/search/tagRecommendations/?tagIds=d90feb62-a655-444a-95e5-9f2a27237338"
}
}
}