[MSSQL] Freie Inhaltssuche mehrerer Begriffe

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

  • [MSSQL] Freie Inhaltssuche mehrerer Begriffe

    Hallo,

    das ist mein statement:

    if("$Suchtext" ne "")
    {
    $selection = "select * from $ptable WHERE Text LIKE '%$Suchtext%' OR LongText LIKE '%$Suchtext%' ORDER BY 'Flag' DESC,'Text'";
    }

    wenn %$Suchtext% aber als Inhalt mehr als ein Wort enthält wird nur der genaue Suchtext gesucht. Ich möchte erreichen, dass automatisch zwischen den Worten im Suchtext die Funktion "und" oder "und / oder" aktiv ist.
    Wie kann ich also wie in einer Suchmaschine mehrere Begriffe suchen, ohne dass die Begriffe zusammen stehen?

    Beispiel:

    Suchtext: "Haus Garten"
    DB-Inhalt: " ein Haus mit Garten"
    Bei LIKE '%$suchtext%' wird der DB-Satz nicht gefunden.


    Wer hat eine Lösung?

    Schon mal Dank im vorraus!

  • #2
    schonmal gesucht?

    http://www.php-resource.de/forum/sho...QueryExtension
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Leider löst es nicht mein Problem.
      Ich kann ja nicht sagen,
      ob Haus und Garten in "Text",
      oder Haus in "Text" und Garten in "LongText"
      oder Haus und Garten in "LongText"
      vorkommen.
      Es sollte auch ein Ergebnis geben, wenn nur Haus oder nur Garten in
      "Text" oder "LongText" vorkommen.
      Löst dein Script auch dieses Problem?

      Kommentar


      • #4
        du musst deinen suchbegriff dynamisch zusammenbauen. hier mal ein codeschnipsel aus meiner suche:
        Code:
        function search($begriff,$ex,$feld) {
        $str = preg_replace("|( )|s","%%",$begriff);
        $stri = "%".$str."%";
        $stri = preg_replace("|(%)([^%]{1})(%)|si","",$stri);
        if($ex == "and") {
        $wer = preg_replace("|(%)([^%]{1,})(%)|si"," like '% \\2%' ",$stri);
        } else { $wer = preg_replace("|(%)([^%]{1,})(%)|si"," like '%\\2%' ",$stri); }
        $wer2 = preg_replace("|([ '%]{2,})(like)|si","\\1 $ex \\2",$wer);
        $str = preg_replace("|(.*?)(like)|si","\\1 $feld \\2",$wer2);
        return $str;
        }
        h.a.n.d.
        Schmalle

        http://impressed.by
        http://blog.schmalenberger.it



        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
        ... nur ohne :-)

        Kommentar

        Lädt...
        X