FULLTEXT-Suche mit Sortierung nach Datumsspalte

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

  • FULLTEXT-Suche mit Sortierung nach Datumsspalte

    Hallo Leute,

    ich arbeite gerade an einer Suchfunktion über eine Tabelle mit etwa 600.000 Datensätzen.

    Die Volltext-Suche funktioniert prima. Allerdings möchte ich das Ergebnis anschließend nicht wie voreingestellt nach der Trefferrelevanz, sondern nach einer weiteren Datumsspalte sortieren lassen.

    Leider dauert die anschließende Sortierung nach dem Datum sehr lange, wenn viele Datensätze gefunden werden, da MySQL ja bekanntermaßen nur einen Index pro Tabelle in einem Query einsetzt.

    Ein mehrspaltiger Index aus FULLTEXT INDEX und nicht FULLTEXT INDEX ist leider auch nicht möglich, oder?

    Hat jemand vielleicht Tipps parat, wie ich die Sortierung nach dem Datumsfeld bei dieser Volltextsuche beschleunigen kann?
    Zuletzt geändert von Saskia; 09.08.2006, 14:37.

  • #2
    Hat wirklich niemand eine Idee?

    Kommentar


    • #3
      Falls du immer die "neusten" oder die "ältesten" anzeigen willst sortier nach der auto_increment ID.

      Kommentar


      • #4
        @prego:
        Vielen Dank erstmal für deine Antwort! :-)

        Ich glaube du hast meine Fragestellung nicht ganz verstanden.
        Erstens benutze ich in dieser Tabelle kein Auto-increment und
        zweitens funktioniert die Sortierung nach meiner Datumsspalte (in der das Datum als Timestamp abgelegt ist) grundsätzlich ja.

        In meiner Frage ging es um die Performance der Sortierung in Verbindung mit der MySQL-Volltext-Suche. Und in diesem Fall wird die Sortierung nach
        Auto-increment meiner Einschätzung nach keine Veränderung bringen.

        Viele Grüße
        Saskia

        Kommentar


        • #5
          Kannst du mal bitte die Struktur deiner Tabelle posten, dann kann ich meiner Idee bezüglich deines Problems weiter nachgehen.
          Sunshine CMS
          BannerAdManagement
          Borlabs - because we make IT easier
          Formulargenerator [color=red]Neu![/color]
          Herkunftsstatistik [color=red]Neu![/color]

          Kommentar


          • #6
            Also, vom Prinzip her ist der Aufbau der Tabelle wie folgt:

            CREATE TABLE `essays` (
            `e_id` int(11) unsigned NOT NULL,
            `e_date` int(11) NOT NULL default '0',
            `e_text` text collate latin1_general_ci,
            ...
            ...
            PRIMARY KEY (`e_id`),
            KEY `e_date` (`e_date`),
            FULLTEXT KEY `e_text` (`e_text`),
            )

            Also genau wie in meinem Problem beschrieben!

            Attribute, die nichts unmittelbar mit meinem Problem zu tun haben, habe ich weggelassen...

            Kommentar


            • #7
              Ich würde eine weitere Tabelle anlegen, in der jedes Wort gespeichert wird.
              Die Tabelle könnte so aussehen:

              wordlist

              e_id | word
              1 | hallo
              1 | wie
              2 | Günther
              ...

              Dann machst du deine Suche auf diese Tabelle und verknüpfst dann mittels e_id aus der wordlist Tabelle und e_id aus der essays Tabelle beide und erhälst dann so das Datum.
              Sollte schneller sein als jedes mal den kompletten Text von 600.000 Einträgen zu durchsuchen.
              Sunshine CMS
              BannerAdManagement
              Borlabs - because we make IT easier
              Formulargenerator [color=red]Neu![/color]
              Herkunftsstatistik [color=red]Neu![/color]

              Kommentar

              Lädt...
              X