Ankündigung

Einklappen
Keine Ankündigung bisher.

2 MySQL Spalten suchen und nach Relevanz ordnen!?

Einklappen

Neue Werbung 2019

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

  • 2 MySQL Spalten suchen und nach Relevanz ordnen!?

    Hallo,

    ich möchte eine einfache Suche:

    ich habe ein Table mit 3 Spalten: id, vorname, nachname

    Nun möchte ich, dass die Leute auf meiner Seite diesen Table (mss_user( durchsuchen können.

    Da ich nicht weiß, wie viele Namensteil und in welcher Reihenfolge sie die Daten eingeben (Vorname Nachname oder andersrum), weiß ich nicht genau, wie ich die Suche machen soll...

    ich habe es versucht, mit der MySQL Fulltext Suche:
    http://dev.mysql.com/doc/refman/5.0/...xt-search.html

    Leider steht am Ende:
    Such a technique works best with large collections (in fact, it was carefully tuned this way). For very small tables, word distribution does not adequately reflect their semantic value, and this model may sometimes produce bizarre results. For example, although the word MySQL is present in every row of the articles table, a search for the word produces no results:
    Das habe ich auch bei folgendem Code gemerkt:

    PHP-Code:
    <?php
    function search_person($name) {
        
    $sql "SELECT
                    id, nachname, vorname,
                MATCH (vorname, nachname) AGAINST ('"
    .$name."') AS score
                FROM mss_user
                WHERE MATCH (vorname, nachname) AGAINST ('"
    .$name."')";
        
    $res mysql_query($sql) or die(mysql_error());
        
    $array = array();
        while(
    $row mysql_fetch_assoc($res)) {
            
    $array[] = $row;
        }
        return 
    $array;

    }
    ?>
    wenn ich nun noch dazufüge " IN BOOLEAN MODE", wie auf der ächsten Seite des Manuals beschrieben, dann findet er bei oberem Code nurnoch jeweils eine Spalte.

    Also angenommen mehrere Spalten wären betroffen mit je einem Treffer in Vorname oder Nachname, dann wird nurnoch einer dieser Name ausgegeben!

    Wie könnte ich eine Suche meiner Art am besten realisieren?

    Danke!


  • #2
    ???? Sorry, ich stell mich jetzt mal doof:

    Code:
    SELECT
                id, nachname, vorname
                FROM mss_user
                WHERE vorname LIKE '%$variable_vorname%' OR nachname LIKE '%$variable_nachname%'

    Kommentar


    • #3
      Weil du offenbar das Vertauschen von Vor- und Nachnamen noch abfangen moechtest, kannst du die Vergleiche auch noch vertausch durchfuehren:

      Code:
      SELECT *
      FROM mms_user
      WHERE vorname LIKE '%$variable_vorname%' OR nachname LIKE '%$variable_nachname%' OR nachname LIKE '%$variable_vorname%' OR vorname LIKE '%$variable_nachname%'
      Die Wahrscheinlichkeit, dass dann aber mehrere Datensätze (wovon vermutlich nur einer der richtige ist) selektiert werden, ist relativ gross.

      Gruss,
      Janosh

      Kommentar


      • #4
        ja ok, danke ...
        aber ich meinte eigentlich, es sei blöd, dass ich eine Variable habe, in der Vorname und Nachname stehen, und eventuell noch mehrere teile des Namens. z.b.
        Hans Gerd Friedrich oder sowas...
        aber ich habe das nun mit IN gelößt. falls jmd noch ne bessere Lösung hat, immer her damit

        Kommentar


        • #5
          mach aber kein * in der Select abfrage

          das tut man nicht

          Kommentar

          Lädt...
          X