Strings - Partieller Abgleich mit Datenbank

Tarantoga

Aktives Mitglied
Hallo,
ich stehe vor einem Problem, bei dem ich nicht wirklich weiß wie ich es genau anpacken soll.
Es wäre toll, wenn mir hier jemand einen Tipp geben könnte.

Und zwar hab ich einen String a, in dem sich die Interessen eines Users wiederspiegeln.
Je länger dieser online unterwegs ist, desto mehr Einträge habe ich in der Datenbank. (Klar, oder? ;))

Bsp: "drinks, irish coffee, watches, sport, drinks, ..."

Wie man sieht stehen die Interessen in chronologischer Reihenfolge darin. Der User hat in diesem Fall Content über Drinks, danach über Irish Coffee, etc. und schließlich wieder über Drinks betrachtet.
Es kann ein Schlagwort also auch mehrfach vorkommen.

Nun können Firmen auf der Seite Werbung schalten. Sie können angeben, welche Interessen die Zielgruppe der Werbung haben soll. z.B. "drinks, lifestyle"

Nun möchte ich für diesen User passende Werbung laden. Der String a soll also mit den von den Firmen angegebenen Interessen von Zielgruppen verglichen werden.


Die Frage ist nun, wie viel davon kann die DB (Derby) machen. (Performance) Was muss in Java gemanged werden?
Im obigen Beispiel müsste also einen Übereinstimmung herauskommen. Schließlich "mag" der User Drinks und die Firma will für Drinks werden.

Kurz gesagt soll geprüft werden, ob irgendein TEIL von String a mit irgendeinem TEIL des Interessensstrings einer der Firmen übereinstimmt.



Alle Werbungen zu laden und Regex in Java zu machen klingt böse nach CPU-Vernichtung.
Ein SQL-String in folgendem Stil wäre super, gibts aber meines Wissens nicht.^^
SELECT * FROM ADDS WHERE INTERESTS CONTAIN PART OF "StringA"

LG
und Danke in Voraus,
Tarantoga
 

tfa

Top Contributor
In SQL kann man das mit "like" machen:
Code:
SELECT * FROM tabelle WHERE spalte LIKE '%irgendeinstring%'

Man könnte auch überlegen, ob man eine "Interessen"-Entity definiert (also als Tabelle) und diese mit den Usern m:n-verknüpft.
 

Tarantoga

Aktives Mitglied
Danke für die Antwort!

Das Problem bei "like" ist, dass zb. "%drinks, lifestyle%" und "%drinks, watches, ...%" nicht matchen.

Vermutlich muss ich wirklich sowas in die Richtung Interessen-Entity machen. Ich hatte gehofft, dass es mit dem Laden der Interessen der besuchten Seiten getan ist.
Wobei bei größeren Datenmengen wäre deine Lösung wahrscheinlich sowieso besser.

LG
 

tfa

Top Contributor
Code:
... x like '%drinks%' and x like '%food%' and x like ...
Bei großen Datenmengen ist das alles aber sehr uneffektiv.
 

Tarantoga

Aktives Mitglied
Stimmt!
Jedenfalls Danke! Arbeite gerade an der Variante mit eigener Tabelle und werden den Thread vorerst mal als erledigt markieren.

LG
 

Ähnliche Java Themen

Neue Themen


Oben