levenshtein + 'explode'

  • Hallo,
    Ich habe in einer mysql-datenbank texte gespeichert die mehr als 100 worte gross sind.
    jetzt möchte ich diese texte durchsuchen, und zwar möchte ich auf jedes einzelne wort levenshtein anwenden.
    kann aber nicht finden wie ich ein datenbank feld in der select so zerlegen kann.
    wenn ich levenshtein auf das ganze feld anwende sind das natürlich unendlich viele zeichen die verändert werden müssen um den suchbegriff zu finden und es gewinnt im prinzip immer das kürzeste feld.
    könnt ihr mir helfen?

    danke

  • An sich müsstest du zuerst alle Einträge ausllesen, dann in einer Schleife alle Texte trennen und wiederum in einer Schleife alle Wörter prüfen.

    Aber darf man fragen, wozu das gut sein soll - außer, dass du damit den Server ziemlich lange rechnen lässt?
    Reicht kein Substring-Count?

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Meine frage bezog sich auf die mysql anweisung. dass ich das händisch in php nacharbeiten könnte ist klar. aber das will ich ja nicht. eben wegen der rechenzeit.
    es muss doch gehen dass mysql ein feld in substrings zerlegt und darauf eine funktion anwendet, oder?

    ich will halt eine suche machen in der man sich verschreiben darf.
    Danke trotzdem.
    weitere vorschläge?

  • hm, sieht an sich gut aus,
    Aber ich bekomms nicht hin die procedure zu installieren.

    muss wohl noch n bisschen tüfteln.
    fehlermeldung ist:

    Code
    [B]SQL-Befehl:[/B]     
                  CREATE  PROCEDURE lib_Explode( sSepar VARCHAR( 255  ) , saVal TEXT ) body :  BEGIN  DROP  TEMPORARY  TABLE  IF  EXISTS lib_Explode;
    
    
         
          [B]MySQL meldet: [/B][URL='http://dev.mysql.com/doc/refman/5.0/en/error-returns.html'][IMG]https://h1654076.stratoserver.net:8443/domains/databases/phpMyAdmin/themes/original/img/b_help.png[/IMG][/URL] 
      #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 '' at line 5

    aber danke schonmal. ich glaube dass könnte schon das richtige sein

  • hm, sieht an sich gut aus,
    Aber ich bekomms nicht hin die procedure zu installieren.

    muss wohl noch n bisschen tüfteln.
    fehlermeldung ist:

    Code
    [B]SQL-Befehl:[/B]     
                  CREATE  PROCEDURE lib_Explode( sSepar VARCHAR( 255  ) , saVal TEXT ) body :  BEGIN  DROP  TEMPORARY  TABLE  IF  EXISTS lib_Explode;
    
    
         
          [B]MySQL meldet: [/B][URL='http://dev.mysql.com/doc/refman/5.0/en/error-returns.html'][IMG]https://h1654076.stratoserver.net:8443/domains/databases/phpMyAdmin/themes/original/img/b_help.png[/IMG][/URL] 
      #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 '' at line 5

    aber danke schonmal. ich glaube dass könnte schon das richtige sein


    Die Fehlermeldung klingt so, als ob du vor Anlegen der Stored Procedure den Delimiter nicht geändert hast. Dadurch wird beim ersten ; angenommen die Procedure sei zuende.
    Einfach vor der Stored Procedure den Delimiter auf beispielsweise // ändern, die Procedure mit // abschließen, und den Delimiter danach wieder auf ; setzen:

    Code
    DELIMITER //
    CREATE meineProcedure
    ....
    END
    //
    DELIMITER ;

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook