Ergebnismenge

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ergebnismenge

    Hallo Kollegen,


    ich sitze an nem kleinen Problem, komme nicht weiter.
    Es wäre nett, wenn mir jemand zumindest einen Gedankenschubs geben könnte oder sogar eine Lösung...

    Ich habe folgenden String:
    "RESULT(1,2,3,4,5) AND RESULT(2,3,5) OR RESULT(6) NOT RESULT(2)"
    Es kann AND/OR/NOT benutzt werden und es kann beliebig viele RESULT() Dinger geben (1-unendlich).

    Wie bekomme ich daraus eine gülitige Ergebnismenge.
    Also die Schnittmenge bei AND und bei OR die Zusammenführung und bei NOT, dass die Ergebnisse abgezogen werden ??
    Im BEispiel wäre die Ergebnismenge glaube ich 3,5,6 oder? Oder bin ich schon so meschugge ??

    mfG Troublegum
    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

  • #2
    auch mit KLammern ?

    ( bal not bla ) and ( bla bka or xcy )

    php-Entwicklung | ebiz-consult.de
    PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
    die PHP Marktplatz-Software | ebiz-trader.de

    Kommentar


    • #3
      Erstmal nur ohne.
      Aber wenn du nen Algorithmus hast, der Klammern verarbeiten kann, nur her damit.

      Ich hab einen geschrieben, der einfach KLammern schafft, aber bei geschachtelten habe ich versagt
      [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
      [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
      [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

      © Harald Schmidt

      Kommentar


      • #4
        Hi,
        mit array_merge kannst du die ORs verbinden,
        mit array_intersect kriegst du die Schnittmenge der ANDs und
        mit array_diff kannst du die NOTs rausballern.

        Klammern zu verarbeiten, habe ich noch nicht geschafft,
        müsste mit einer rekursiven Funktion gehen die den String
        mit den Klammern per Referenz übernimmt.

        netten Gruß, hOk

        Kommentar


        • #5
          Ja, bei Klammern hab ich folgendes Problem:

          String: (Jackson AND (Michael OR Janet)) OR (Jacksons AND Five)
          Soll alles von Michael und Janet Jackson sowie den Jacksons Five liefern.

          Dazu geb ich den String an eine Funktion find_parentheses(), die wenn eine Klammer geöffnet wird, den Reststring ab da rekursiv wieder an sich selbst gibt.
          Wenn die KLammer geschlossen wird, wird der String bis dorthin an eine Funktion evaluate_parenthese() übergeben, die die Ergebnisse für den Inhalt der Klammer zusammensucht und in einem 2. String einsetzt.

          Bei nem String wie (Britney AND Spears) OR (Christina AND Aguilera) funktinioniert das auch prima:
          Es wird als 2. String RESULT(1,2,3,4,5) OR RESULT(6,7,8) zurückgegben. RESULT() steht für das Ergebnis für einen Ausdruck.
          Aber bei einer geschachtelten Klammer wie im oberen Beispiel wird der Klammerinhalt falsch gelesen.
          Also der Inhalt der 1. Klammer müsste eigentlich nur Jackson sein. Gruppiert mit dem Ergebnis von (Michael Or Janet)
          [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
          [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
          [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

          © Harald Schmidt

          Kommentar


          • #6
            Ha, auch wenn ich hier nen Monolog führe
            Ich habs glaub ich endlich geschafft die verschachtelten Klammern zu knacken. *hüpf* *hüpf*

            D.h. Abfragen wie : ( ( janet or michael ) and jackson ) or ( jacksonsfive or jacksons-five ) or ( oasis and wonderwall )
            Sind nun möglich
            Als Ergebnis erhalte ich dann

            ( ( RESULT(foobar) ) and RESULT(foobar) ) or ( RESULT(foobar) ) or ( RESULT(foobar) )

            foobar ist jetzt ein Platzhalter für die Ergebnisse.

            Eigentlich müsste man das Ergebnis ja jetzt nochmal durch einen solchen Parser laufen lassen,oder ?
            Das dürfte ja jetzt kein Problem mehr sein - vorrausgesetzt ich habe eine Funktion, um ein Ergebnis OHNE Klammern zusammenzuführen.
            Dann könnte ich es auch alleine.

            Ach so: Wenn man da RESULT durch id IN ersetzt kann man daraus ne SQL Abfrage bauen und man spart dadurch die Arbeit. Aber es ist halt wieder ne zusätzliche Abfrage

            EDIT: Nicht dass ich das alles höre, sind nur Beispiele.
            Obwohl Oasis - Wonderwall echt geil ist
            Zuletzt geändert von Troublegum; 22.07.2002, 02:53.
            [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
            [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
            [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

            © Harald Schmidt

            Kommentar

            Lädt...
            X