suche nach ganzem wort

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • suche nach ganzem wort

    nachdem ich nun (fast) alles zum thema gelesen habe und schon 2 tage herumprobiere, muss das forum helfen.

    ich suche nach dem vorkommen des suchbegriffs als ganzes wort.
    als einstieg habe ich ganzes wort definiert als:
    hat leestelle davor und dahinter.
    PHP Code:
    "... WHERE text LIKE '% $search%' OR text LIKE '%$search %'"
    beispieltext:
    "Indien liegt keinesfalls in Berlin."

    gefunden wird "Indien", "keinesfalls", "in" und "Berlin".

    "Indien", "Berlin" und "in" sind ok, aber wieso "keine"?

    vielleicht gibt es einen hinweis, um wirklich nur ganze worte zu finden?
    gruss und danke!

  • #2
    gefunden wird "Indien", "keinesfalls", "in" und "Berlin".

    "Indien", "Berlin" und "in" sind ok, aber wieso "keine"?
    entscheid dich mal!

    Comment


    • #3
      statt "keine" muss es natürlich keinesfalls heissen. sorry.

      hast du sonst noch etwas beizutragen?

      Comment


      • #4
        ich versteh jetzt net so ganz, was dich wundert.

        Du wunderst dich, wieso da keinesfalls rauskommt? Wieso wundert dich das? die erste bendingung und sogar die zweite bedingung trifft zu.

        Comment


        • #5
          finde ich nicht.
          das "in" in "keinesfalls" hat weder davor noch dahinter ein leerzeichen.
          und das sind doch die bedingungen.

          gesucht wird doch :
          1. "_in"
          2. "in_"
          (unterstriche stehen für leerzeichen).

          Comment


          • #6
            Jetzt verstehe ich!!!

            Du solltest vielleicht auch mal erwähnen, dass $search "in" enthält. Da muss man erstmal drauf kommen.

            "keine" sollte definitiv nicht rauskommen. Kann ich mir auch nicht vorstellen, eigentlich.

            Vielleicht wäre ne Volltext-Suche besser geeignet.

            Comment


            • #7
              also noch eimal sorry, $search ist "in".
              natürlich können auch die mods nicht gedanken lesen.

              dennoch ist das ergebnis leider wie geposted.

              und noch einmal zur 2. frage:
              wie gehe ich die suche nach einem ganzen wort am besten an.
              selbst o'reilly etc. schweigen sich vornehm aus.

              volltext ist nicht gewünscht (gründe in anderen beiträgen hier im forum).

              Comment


              • #8
                OffTopic:
                natürlich können auch die mods nicht gedanken lesen.
                Das habe ich nicht gesagt!


                Hmm, also ich werde das jetzt erstmal inner testumgebung überprüfen. Kanns echt nicht glauben...

                Fulltext wäre eigentlich am besten geeignet. Ansonsten wüsste ich net, wies gehen sollte, weil du ja 1. und letztes Wort ausschließen würdest. Oder du hast auch wörter wie Kaiserin_ dadrin.

                Comment


                • #9
                  Poste mal deine ganze (geparste) Query.

                  Comment


                  • #10
                    ja, das ausschliessen des 1. und letzten wortes ist natürlich ein problem.
                    mir schwebt da etwas wie ein array mit satzzeichen vor , zumindest für das letzte wort.

                    hier der ungekürzte quellcode:
                    PHP Code:
                    $search "hp_pages.text LIKE '% $search_word%' OR hp_pages.text LIKE '%$search_word %'";

                    $res mysql_query("SELECT hp_pages.text, hp_pages.link_id, hp_nav.nav_name
                    FROM hp_nav LEFT JOIN hp_pages
                    ON hp_pages.link_id = hp_nav.id
                    WHERE 
                    $search");

                    while (
                    $wert mysql_fetch_array($res))
                        {
                        ..... 
                    vielleicht steckt da ja ein tippfehler drin.
                    aber ich merke schon, das "ganze wort problem" scheint wirklich ein grösseres kaliber zu sein....
                    danke für die hilfe bisher!

                    Comment


                    • #11
                      stellt sich nur die frage, woran du an dem Indien/Berlin-Satz gemerkt hast, dass er das keinesfalls gefinden hat, bzw. darauf angesprungen ist.

                      der sollte dir ja jeden Datensatz nur einmal ausgeben, egal wie oft die bedingung zutrifft. (so macht mein server das zumindest.

                      und wenn ich 'abc keinesfalls xyz' als text in der db hab, dann findet der den auch nicht.

                      Comment


                      • #12
                        joo TobiaZ,
                        clever gedacht und richtig analysiert.

                        ich habe eine ergebnisseite mit links auf die seiten, in denen der suchtext vorkommt.
                        zum testen wird in den eigentlichen seiten der suchbegriff fett dargestellt und damit natürlich auch das "in" mitten in einem wort.
                        also noch einmal: mea culpa!

                        Comment


                        • #13
                          auch wenn meine Latein-Zeit schon etwas hinter mir liegt. Freut mich geholfen zu haben!

                          Comment


                          • #14
                            OffTopic:
                            das wichtige latein vergisst man seeeeehr lange nicht kann ich bestätigen

                            dennoch:
                            gibt es denn nun eine allgemein akzepierte methode der "ganzes-wort-suche"?

                            Comment


                            • #15
                              mein vorschlag:
                              PHP Code:
                              /*
                              $search_word: suchbegriff
                              text: spaltenname
                              */

                              $ende = array(".",",",";","!","?",":"," ");

                              for (
                              $i=0$i<7$i++)
                                  {
                                  
                              $search_string .= "text LIKE '% ".$search_word.$ende[$i]."%' OR ";
                                  }

                              $search_string .= " text LIKE '%".$search_word." %'";

                              $res mysql_query("SELECT text WHERE $search_string");
                              ... 
                              sollte das gesuchte wort finden, wenn es
                              1.) am anfang ein leerzeichen und am ende einen der werte aus $ende oder
                              2.) am ende ein leerzeichen
                              enthält.

                              Comment

                              Working...
                              X