Denkanstösse zu Schnittmengensuche gesucht

Status
Nicht offen für weitere Antworten.

NTB

Bekanntes Mitglied
Hiho,

ich hätte gerne mal Eure konzeptionelle Hilfe.

Ich habe viele "Resourcen". Jede Resource ist mit mindestens einem "Tag" (Keyword) versehen. Also das, was man unter Tagging versteht. Die Tags werden als Set in Resource-Objekten gehalten.

Gegeben sei ein Set von Tags, und ich möchte alle Resourcen finden, in denen möglichst viele dieser gegebenen Tags vorkommen, auf jeden Fall mindestens eins.

Wie kann ich das schlau angehen?

Die Resourcen zu finden, in denen das komplette Set vorkommt wäre mit Set.containsAll ja kein Problem...
...trifft leider nicht, was ich brauche :)


Falls das noch nicht verständlich genug war, ein bischen Pseudocode:

Code:
class Resource {
   Set<Tag> tags
}
Code:
class Tag {
   String name
}
Code:
main {
   Resource merkel
   merkel.setTags("CDU","Frau","süss","Politik","blond")
   Resource schreinemakers
   schreinemakers.setTags("Fernsehen","blond","Frau")
   Resource frings
   frings.setTags("Fussball","Fernsehen","mann")


   findResourcesForTags("Frau","blond",CDU")
   findResourcesForTags("Fernsehen")
   findResourcesForTags("Frau","blond")
}
Wie implementiere ich schlau mein "findResourcesForTags"? Hat da jemand eine schlaue Idee?
 

Ariol

Top Contributor
Wärs nicht am einfachsten wenn du die Methode als findResourcesForTags(String[] args) definierst?

Damit kannst du dann beliebig viele Such-Strings angeben.
 

Marco13

Top Contributor
Prinzipiell kannst du Schnittmengen zwischen Sets bilden - mit retainAll.

Set X = { A, B, C, D }
Set Y = { C, D, E }
X.retainAll(Y);
X = { C, D }

Die Größe des ergebnisses ist dann der Wert, auf dem die Entscheidung basiert. Besonders effizient ist das aber vermutlich nicht. Die gemeinsame Elemente per Hand zu zählen könnte schneller sein (und auch nicht viel komplizierter...)
 

Marco13

Top Contributor
@Ariol: Das Zauberwort heißt "varargs":

Code:
findRessource(String ... x) {...}

findRessource("A"); // OK
findRessource("A", "B"); // OK
findRessource("A", "B", "C"); // OK
 

NTB

Bekanntes Mitglied
Wildcard hat gesagt.:
Man könnte sich da was Lucence abschauen oder Lucence direkt verwenden.
Soll nicht kleinlich wirken, aber ich will Mißverständnisse vermeiden:
Du meinst Lucene (mit nur 1x c) oder?

@Ariol:
Das war Pseudocode, um zu veranschaulichen, was ich möchte.
Ich übergebe gar keine Strings, sondern ein Set von Tags :)
 

NTB

Bekanntes Mitglied
Marco13 hat gesagt.:
Prinzipiell kannst du Schnittmengen zwischen Sets bilden - mit retainAll.

Set X = { A, B, C, D }
Set Y = { C, D, E }
X.retainAll(Y);
X = { C, D }

Das war tatsächlich exakt, was ich gesucht habe. Dankeschön. Doof ist dabei nur, dass retainAll nicht die Schnittmenge zurückgibt, sondern das Original verändert. D.h. bevor ich retainall mache, muss ich noch das originale Set kopieren. Das ist natürlich alles sehr teuer... :(
 

Marco13

Top Contributor
Wie gesagt - anders ist es auch nicht viel schwerer. Pseudocode:

Code:
private int computeIntersectionSize(Set a, Set b)
{
    int intersectionSize = 0;
    for (Object x : a)
    {
        if (b.contains(x)) intersectionSize++;
    } 
    return intersectionsSize;
}

Resource findResource(Set tags)
{
    Resource best = null;
    int bestValue = -Integer.MAX_VALUE;
    for (all resources r)
    {
        int value = computeIntersectionSize(r, tags);
        if (value > bestValue)
        {
             best = r;
             bestValue = value;
        }
    }
    return best;
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
N Java API für CardDav und CalDav gesucht Allgemeine Java-Themen 4
B OCR Library gesucht Allgemeine Java-Themen 6
V Javalehrer gesucht Allgemeine Java-Themen 2
K Java-Forum gesucht Allgemeine Java-Themen 12
O Best Practice Hilfe bei Algorithmus gesucht Allgemeine Java-Themen 10
A Hilfe gesucht Allgemeine Java-Themen 44
N Schulung zu Tomcat/JSP/Struts gesucht Allgemeine Java-Themen 0
E Gewollte Endlosschleife unterbrechen oder Alternative gesucht Allgemeine Java-Themen 2
S API gesucht Allgemeine Java-Themen 3
O Freies Tool zum Jar-File obfuscaten gesucht! Allgemeine Java-Themen 5
Londi DJ MP3 Lib gesucht Allgemeine Java-Themen 0
I Dringend nachhilfe in programmieren gesucht!!!!!!!! Allgemeine Java-Themen 1
I Dringend nachhilfe in programmieren in mannheim gesucht!!!!! Allgemeine Java-Themen 3
L Lib gesucht: Java-Objekte mit JSON Allgemeine Java-Themen 2
J Kalenderwecker gesucht Allgemeine Java-Themen 2
D Kuriose Geschichte -> Antwort gesucht Allgemeine Java-Themen 4
O Tag Cloud Algorithmus Idee gesucht Allgemeine Java-Themen 2
S Java XTools gesucht Allgemeine Java-Themen 2
N Boolsche Algebra via eval vereinfachen -> Ausmultiplizieren gesucht Allgemeine Java-Themen 15
E Nachhilfe in Java gesucht!!! Allgemeine Java-Themen 3
H Graph-Algorithmus gesucht Allgemeine Java-Themen 21
B Dringend Hilfe gesucht für Struktogramm Allgemeine Java-Themen 11
N Liste gesucht Allgemeine Java-Themen 2
Guybrush Threepwood Pattern gesucht: Punkt ohne Leerzeichen dahinter Allgemeine Java-Themen 3
B IRC-Library Gesucht Allgemeine Java-Themen 2
T Projektthema gesucht Allgemeine Java-Themen 2
c_sidi90 Aufgaben für Einstellungstest (Azubicasting) gesucht Allgemeine Java-Themen 10
M WebFramework für Userhandling gesucht Allgemeine Java-Themen 7
E Dezimalzahl -> Hexadezimalzahl [Lösungsweg gesucht] Allgemeine Java-Themen 2
M Funktion gesucht: Text vektorisieren Allgemeine Java-Themen 20
R Collections Datenstruktur gesucht Allgemeine Java-Themen 12
J Algorithmus gesucht (Stringtransformation) Allgemeine Java-Themen 4
P JFormattedTextField für durch Semikolon getrennte Integer-Werte gesucht / Regulärer Ausdruck Allgemeine Java-Themen 3
alex_fairytail IT-Kleinprojekt: Ideen gesucht! Allgemeine Java-Themen 18
B TypeOf oder ähnliches gesucht Allgemeine Java-Themen 3
A Bibliothek für NP-harte Zuordnung gesucht. Allgemeine Java-Themen 7
E Super erzwingen, konzept/pattern gesucht. Allgemeine Java-Themen 8
T Passende Listenstruktur gesucht Allgemeine Java-Themen 5
S Webstart: vollständige JNLP-Doku. gesucht Allgemeine Java-Themen 4
S Meinung zu Programmidee gesucht Allgemeine Java-Themen 9
Guybrush Threepwood Neuronale Netzwerke - Bibliothek gesucht Allgemeine Java-Themen 3
agentone Graphen-Lib gesucht Allgemeine Java-Themen 7
Ark Name für Funktion gesucht Allgemeine Java-Themen 5
F Spam-Mail-Programm gesucht Allgemeine Java-Themen 11
S JKL - Bibiliothek gesucht ? Allgemeine Java-Themen 9
hdi Beispiel für EDT Violations gesucht Allgemeine Java-Themen 4
J Open Source Projekt anbieten - Leitfaden gesucht Allgemeine Java-Themen 3
E Mehrfacher vererbungsersatz gesucht. Allgemeine Java-Themen 9
F Passende Struktur gesucht Allgemeine Java-Themen 6
A Regex gesucht Allgemeine Java-Themen 9
J Parser / Scanner / Tokenizer gesucht Allgemeine Java-Themen 3
V DecimalformatPattern gesucht Allgemeine Java-Themen 4
as182005 Bibliothek für Graph Visualisierung gesucht Allgemeine Java-Themen 3
H Framework empfehlung / gute Anfängerbeispiele gesucht Allgemeine Java-Themen 12
M Texteditor gesucht Allgemeine Java-Themen 3
B Effizienter Suchalgorithmus gesucht Allgemeine Java-Themen 10
D design gesucht - Angabe von zu ersetzenden substrings Allgemeine Java-Themen 2
P Java-Security-Aufgabe gesucht Allgemeine Java-Themen 2
J Listener für Ende eines Threads gesucht... Allgemeine Java-Themen 5
T Webseite (HTML) Parser gesucht Allgemeine Java-Themen 8
D klassenstruktur gesucht Allgemeine Java-Themen 17
N Datenstruktur für Netze gesucht Allgemeine Java-Themen 8
B Pattern gesucht, Programm Optionen, Casten vermeiden Allgemeine Java-Themen 3
S Verschlüsselungsbibliotheken gesucht Allgemeine Java-Themen 8
N Empfehlung für Java 1.5 Decompiler gesucht Allgemeine Java-Themen 2
D Banking Framework gesucht Allgemeine Java-Themen 5
G OOP Umsetzung gesucht Allgemeine Java-Themen 25
S Netzwerkdiagramm / Sequenzdiagramm - Ideen gesucht Allgemeine Java-Themen 2
S Stemming-Algorithmus gesucht (z.B. Porter) Allgemeine Java-Themen 2
J Bibliothek gesucht Ana_lysieren von wss. Referenzen Allgemeine Java-Themen 2
S VideoStreaming-Tool gesucht! Allgemeine Java-Themen 2
G Sehr gutes Java-Framework(Gui-Builder) auf XML-Basis gesucht Allgemeine Java-Themen 21
T Datenstruktur gesucht Allgemeine Java-Themen 18
D Report Engine gesucht Allgemeine Java-Themen 2
F Idee fuer Suchfeldmapping gesucht Allgemeine Java-Themen 10
C Pattern für Kommunikation gesucht Allgemeine Java-Themen 3
0 Rechenaufwändiger, kurzer Codeschnipsel gesucht! Allgemeine Java-Themen 17
E Countdownfunktion gesucht Allgemeine Java-Themen 52
S Koridinatensystem gesucht Allgemeine Java-Themen 4
M IRC Chat - Klasse oder Application gesucht Allgemeine Java-Themen 9
D gesucht Wörterbuch deutsch / englisch Allgemeine Java-Themen 4
M Schnell kleine Hilfe gesucht! Allgemeine Java-Themen 3
K Elegante Lösung zum Manipulieren von Collections gesucht Allgemeine Java-Themen 16
B Formel Interpreter gesucht Allgemeine Java-Themen 7
S Methode zum Zählen von Buchstaben in Strings gesucht Allgemeine Java-Themen 11
K Prozess-Visualisierung: Stichwörter gesucht Allgemeine Java-Themen 4
B Unicode für Kreuz gesucht Allgemeine Java-Themen 2
H Unicode Darstellung in Java, spezielles Zeichen gesucht Allgemeine Java-Themen 4
foobar Alternative zu JavaHelp gesucht Allgemeine Java-Themen 2
B Methode gesucht Allgemeine Java-Themen 3
H if - else if-else bessere Lösung gesucht Allgemeine Java-Themen 4
M Chat-Software gesucht Allgemeine Java-Themen 3
T Design-Tipp gesucht Allgemeine Java-Themen 2
G Shopsystem gesucht Allgemeine Java-Themen 2
M Java Klasse gesucht / Outlook Adressdaten auslesen Allgemeine Java-Themen 3
Ark Diagramm zur Java-Grammatik gesucht Allgemeine Java-Themen 2
M Jemannd mit 1.4/1.3/1.2 zum Testen gesucht. Allgemeine Java-Themen 15
foobar Obfuscator gesucht Allgemeine Java-Themen 2
S Konverter Postscript -> Grafik gesucht Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben