[PHP]Suche nach Gewichtung ordnen?

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

  • [PHP]Suche nach Gewichtung ordnen?

    Hallo,

    ich habe mir eine kleine suche geschrieben:

    PHP-Code:
    $sql 'SELECT `title`, `url`, `description`
      FROM `users`
        WHERE (`title` LIKE "%' 
    mysql_real_escape_string($_GET['search_string']) . '%"
            OR `url` LIKE "%' 
    mysql_real_escape_string($_GET['search_string']) . '%"
            OR `description` LIKE "%' 
    mysql_real_escape_string($_GET['search_string']) . '%")'

    Ich weiß zwar im Moment nicht nach was dieses geordnet wird, aber ich wollt einfahc mal nachfragen ob man diese evtl. nach Gewichtung sortieren kann, sprich: Bei welchem ergebnis stimmte mehr überein...
    Mfg Tobias Dosch

  • #2
    Wenn du dich von dem LIKE lösen kannst, hast du eine Chance...
    Wenn MATCH() in einer WHERE-Klausel verwendet wird (vgl. obiges Beispiel), dann werden die zurückgegebenen Datensätze automatisch nach absteigender Relevanz sortiert.
    http://dev.mysql.com/doc/refman/5.1/...xt-search.html
    Wir werden alle sterben

    Kommentar


    • #3
      Hallo,

      vielen Dank für die Antwort. Dies ist genau das was ich gesucht habe.

      Allerdings hab ich einen Fehler den ich nicht finde:

      PHP-Code:
      $sql 'SELECT `title`, `url`, `description`
        WHERE MATCH (`title`, `url`, `description`)
          AGAINST ("' 
      mysql_real_escape_string($_POST['searchstring']) . '")
            FROM `users`'

      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 'WHERE MATCH (`title`, `url`, `description`) AGAINST ("ttt") FROM `us' at line 2
      Entweder bin ich gerade zu müde oder ich finde den fehler wirklich nicht
      Mfg Tobias Dosch

      Kommentar


      • #4
        SELECT ...
        WHERE ...
        FROM ...

        Wenn du es jetzt noch nicht siehst, vergleiche es mal mit der Query in deinem ersten Post.

        Kommentar


        • #5
          ach da war der fehler... gefixt!

          So nun kommt der nächste: Can't find FULLTEXT index matching the column list

          Ich hab aber alle 3 Felder auf Fulltext gesetzt... und das id feld(welches aber so nicht genutzt wird) hat den primary_key.
          Mfg Tobias Dosch

          Kommentar


          • #6
            Du wirst einen Index brauchen, der alle drei Spalten gleichzeitig abdeckt?

            Kommentar


            • #7
              funktioniert zwar irgendwie nicht, wenn ich im phpmyadmin alle 3 markiere nd auf den blitz klick.. Aber ich werd das irgendwann mal hinkriegen hoff ich...

              SQL-Befehl: Bearbeiten

              ALTER TABLE `users` ADD INDEX ( `title` , `url` , `description` ) ;

              MySQL meldet: Dokumentation
              #1170 - BLOB/TEXT column 'title' used in key specification without a key length
              Mfg Tobias Dosch

              Kommentar


              • #8
                ALTER [IGNORE] TABLE tbl_name
                ADD FULLTEXT [INDEX] [index_name] (index_col_name,...)
                Quelle: http://dev.mysql.com/doc/refman/5.1/de/alter-table.html

                Kommentar


                • #9
                  aber ich wollt einfahc mal nachfragen ob man diese evtl. nach Gewichtung sortieren kann
                  Da hat doch Berni was dazu geschrieben...
                  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

                  Lädt...
                  X