[PHP5] Fulltext-Suche mit Anführungszeichen

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

  • [PHP5] Fulltext-Suche mit Anführungszeichen

    Hallo,

    ich beschäftige mich seit gestern mit dem Thema "Full-Text-Suche".

    Nun bin ich soweit, dass ich zwei Spalten einer Tabelle mittels Fulltext indexiert habe und kann mittels folgender Abfrage eine Suche durchführen:

    PHP-Code:
    $query mysql_query (" SELECT title, news FROM tb_newsfeed WHERE MATCH(title, news) AGAINST('$suchbegriff')  "); 
    Es funktioniert sogar. Nun meine Frage:

    Ich kann mit der Abfrage zwar nach einzelnen Wörtern suchen (z.B. gulli), aber nicht nach einem Ausdruck (z.B. gullis board).
    Wenn ich nämlich nach dem Ausdruck gullis board suche, werden alle Datensätze, in denen die Wörter gullis oder board vorkommmen angezeigt.

    Wie kannn ich es erreichen, dass wenn ich den Such-Ausdruck in Anführungszeichen setze, es nur nach dem Ausdruck gesucht wird und nicht nach einzelnen Wörtern.


    Danke

  • #2
    schau dir den modifier "IN BOOLEAN MODE" an.

    Kommentar


    • #3
      Etwa so:?

      PHP-Code:
              $query mysql_query (" SELECT title, news FROM tb_newsfeed WHERE MATCH(title, news) AGAINST('$suchbegriff' IN BOOLEAN MODE)  "); 
      Es klappt aber leider nicht!

      Kommentar


      • #4
        wie hast du $suchbegriff verändert?

        Kommentar


        • #5
          Den habe ich nicht geändert.

          Kommentar


          • #6
            das solltest du aber (steht das nicht im manual?)

            Kommentar


            • #7
              Doch in Manual steht: '"some words"'

              Für meine Abfrage sollte es dann heißen:
              PHP-Code:
                      $query mysql_query (" SELECT title, news FROM tb_newsfeed WHERE MATCH(title, news) AGAINST(' "$suchbegriff" ' IN BOOLEAN MODE) "); 
              Das ergibt aber eine MySQL-Parse Error.

              Kommentar


              • #8
                Original geschrieben von bigtail
                Das ergibt aber eine MySQL-Parse Error.
                zeig mal die query und die fehlermeldung. und nimm die leerzeichen raus.

                Kommentar


                • #9
                  PHP-Code:
                  $connect mysql_connect($host$user$pass) or die( mysql_error() );
                  mysql_select_db($db$connect);

                  $suchbegriff $_POST['suchbegriff'];


                  if(
                  $_POST['senden'])
                  {
                          
                  $query mysql_query ("SELECT title, news FROM tb_newsfeed WHERE MATCH(title, news) AGAINST('"$suchbegriff"' IN BOOLEAN MODE)");
                                  
                          
                  $count mysql_num_rows($query);
                          echo 
                  $count " Datensätze wurden gefunden.<br>";
                          
                          echo 
                  "<table border= 0 width='100%'>";
                          
                          while( 
                  $row mysql_fetch_object($query) )
                          {
                              echo 
                  "<tr><td bgcolor='#66CCFF'>$row->title</td></tr>
                                    <tr><td dir=right align=right>
                  $row->news</td></tr>";
                          }
                          
                          echo 
                  "</table>";
                          
                          echo 
                  mysql_error();
                          

                  Und das ist der Syntax-Error:


                  Parse error: syntax error, unexpected T_VARIABLE in D:\htdocs\tests\fulltext_searching.php on line 32

                  Line 32 ist da, wo die Abfrage steht.

                  Kommentar


                  • #10
                    http://de2.php.net/manual/en/language.types.string.php

                    das ist keine sql-fehlermeldung, soweit kommts erst gar nicht.

                    Kommentar


                    • #11
                      Kannst du immer noch nicht mit Zeichenketten in PHP umgehen ...?
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Sag mir bitte nicht, dass dies
                        PHP-Code:
                        $query mysql_query ("SELECT title, news FROM tb_newsfeed WHERE MATCH(title, news)
                        AGAINST('"
                        $suchbegriff"' IN BOOLEAN MODE)"); 
                        die fragliche Zeile ist. Du weisst schon wie man Strings und Vars verknüpft
                        Falls nein Tipp: .

                        Gruss
                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          Ja, das Maskieren von Anführungszeichen löst wohl immer meine Probleme.

                          Danke für eure Hilfe
                          Zuletzt geändert von bigtail; 28.03.2007, 15:33.

                          Kommentar


                          • #14
                            Ähm wieso maskieren ? Korrekt verknüpfen wäre wohl eher angebracht
                            PHP-Code:
                            $query mysql_query ("SELECT title, news FROM tb_newsfeed WHERE MATCH(title, news)
                            AGAINST('"
                            .$suchbegriff."' IN BOOLEAN MODE)"); 
                            Gruss

                            tobi
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              Danke für dein Tipp. Allerdings wenn ich
                              PHP-Code:
                              '".$suchbegriff."' 
                              benutze, wird nicht nach der exakten Phrase gesucht, sondern nur nach der einzelnen Wörtern.
                              Zuletzt geändert von bigtail; 28.03.2007, 21:21.

                              Kommentar

                              Lädt...
                              X