Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL Suche

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

  • MySQL Suche

    Hallo

    Ich habe ein paar Fragen zu MySQL
    Ich möchte Texte in eine Datenbank speichern. Diese soll man dann über eine Suchfunktion durchsuchen können.

    Hab das so geplant, dass ich jedes wort erst mal mit explode trenne und dann
    eine Abfrage ungefähr in der Form mache:


    PHP-Code:
    $suche "SELECT * FROM texte WHERE ";
    $woerter explode(" "$eingabe);

    $suche .= "textspalte like %".$woerter[0]."%";
    for(
    $i 1$i count($woerter); $i++)
    {
        
    $suche .= " AND textspalte like %".$woerter[$i]."%";

    Denke, dass das script so wies da steht auch gehen sollte.

    Die Frage ist nur, wie sieht es mit dem Leistungsverbrauch aus, wenn es mehr als 2000 einträge sind und pro eintrag ca 150 wörter.

    Ist MyISAM dafür geeignet oder gibt es was, das besser wär?

    Meint ihr, dass man mit der suche gute Treffer bekommt? Also wenn ich z.b. Fuss PHP Note eingebe.
    text wär dann z.b. In den Fussnoten von phpscripten steckt ein text, dessen sinn noch viel geringer ist wie der, den ich hier gerade schreibe.

    Wie ist es mit der Groß-/Kleinschreibung? wird die hier beachtet?
    Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.


  • #2
    MySQL :: MySQL 5.1 Reference Manual :: 11.8 Full-Text Search Functions
    www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
    Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih

    Kommentar


    • #3
      Danke
      Die Suche selber ist ja nicht so schlecht. Aber ich kann damit wohl nicht umgehen

      Ich habe 5 Zeilen in jeder kommt das wort wer vor. Nur in der 5. Zeile steht nicht wer sondern wertvolle

      Suche ich nach wer, bekomme ich nichts zurück.
      Suche ich nach +wer - fracht, bekomme ich genau die 5. Zeile zurück. Obwohl das -fracht eigentlich genau die Zeile hätte ausschliesen müssen.

      Kan mir das mal bitte einer erklären?

      Code:
      SELECT * FROM cita WHERE MATCH (texte) AGAINST ('+wer -fracht');
      Hab schon wirklich einiges versucht, aber ich versteh das nicht.
      hab auch schon vieles hiervon gelesen:
      MySQL :: MySQL 5.1 Reference Manual :: 11.8.2 Boolean Full-Text Searches

      hab mich an dieses Beispiel hier gehalten:
      • '+apple -macintosh'
        Find rows that contain the word “apple” but not “macintosh”.
      Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

      Kommentar


      • #4
        PHP-Code:
        SELECT FROM cita WHERE MATCH (texteAGAINST ('+wer* -fracht' IN BOOLEAN MODE); 

        Kommentar


        • #5
          das hab ich auch schon versucht.
          Kommt aber nur das bei raus:
          Code:
          #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BOLLEAN MODE )
          Hm... heist das nicht BOOLEAN MODE?
          Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

          Kommentar


          • #6
            Ja heisst es...

            Edit:

            Du musst bedenken das die MySQL Fulltext Suche nicht wie der LIKE Befehl arbeitet. Er sucht nur ganze Wörter. Like hingegen durchsucht auch Teilvorkommen innerhalb eines Wortes.

            Desweiteren musst du drauf achten, dass wenn du nicht im BOOLEAN MODE suchst, du ein Fulltext Index setzen musst.

            Kommentar

            Lädt...
            X