# Strings - Partieller Abgleich mit Datenbank



## Tarantoga (9. Jul 2012)

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 (9. Jul 2012)

In SQL kann man das mit "like" machen:

```
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 (9. Jul 2012)

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 (9. Jul 2012)

```
... x like '%drinks%' and x like '%food%' and x like ...
```
Bei großen Datenmengen ist das alles aber sehr uneffektiv.


----------



## Tarantoga (9. Jul 2012)

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

LG


----------

