Match & Against - Zusammenführung zweier Spalten

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Match & Against - Zusammenführung zweier Spalten

    Hallo Forum,

    Seit gestern versuche ich über die Volltextsuche folgendes zu realisieren.
    Die Suche soll über 6 Spalten einer Tabelle laufen.
    Soweit so gut funktioniert das ganze ja auch.

    Worann ich jetzt scheitere ist, dass der suchende zb. nach "hersteller modell" sucht. In diesem Falle soll die genaue Wortgruppe gefunden werden - also innerhalb von Anführungszeichen.
    Jetzt hab ich das Problem, dass in der Tabelle der Hersteller in Spalte A ist und das Modell in Spalte B ist.

    Gibt es da überhaupt eine Möglichkeit Spalte A und B so zusammenzuführen, dass er genau nach dieser Wortgruppe was finden kann?

    Also mein SQL-Statement schaut im Moment folgenderweise aus:
    PHP Code:
    SELECT count(*) 
    FROM anzeigen 
    WHERE 
    MATCH 
    (Hersteller,Modell,modellfreitext,Text,Ausstattung,Komfort
    AGAINST ('"Hersteller Modell"' IN BOOLEAN MODE
    AND 
    aktiv=
    AND fart='PKW'
    bidgo - Benzin im Blut
    Wir wollen Dich und Deine Karre
    Videoblog & Bilderblog zu verschiedenen Bereichen

  • #2
    Wieso brauchst du für Hersteller und Modell überhaupt eine Volltextsuche?
    Reicht da nicht ein 'LIKE "%<string>%"'?

    Ansonsten, wenn du einen eigenen Server hast, könntest du was externes wie Lucene (http://lucene.apache.org/) benutzen - damit wäre das bestimmt möglich.

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Comment


    • #3
      Naja, ich habe schon einen eigenen Server.
      Warum nicht die LIKE?

      Ich muß für die Seite eine umfangreiche Suche realisieren welche über mehrere Tables geht.

      Mein Erster Table ist der in denen Fahrzeuginserate drinnen stehen und zur Zeit über 600.000 Einträge hat.

      Ich hatte es gestern mit dem Statement
      PHP Code:
      SELECT count(*) 
      FROM anzeigen 
      WHERE 
      (Hersteller LIKE '%suchwort%'
      OR Modell LIKE '%suchwort%'
      OR modellfreitext LIKE '%suchwort%'
      OR Text LIKE '%suchwort%'
      OR Ausstattung LIKE '%suchwort%'
      OR Komfort LIKE '%suchwort%')
      AND 
      aktiv=
      AND fart='PKW'
      probiert und er hat sage und schreibe serverseitig 40 Sekunden benötigt, obwohl ich über diese 6 Spalten auch einen index gelegt hatte.

      Und jetzt würden dann noch ca. 8 weitere Tables abgefragt werden, was die Gesamtzeit beträchtlich in die Höhe schnellen lassen würde.

      Mit der Volltextsuche liege ich grad mal bei der Ersten Abfrage bei 0,009 Sekunden serverseitig.
      Da stellt sich für mich dann eigendlich gar nimmer die Frage warum nicht mit LIKE - ausser ich habe etwas wesendliches übersehen.

      Ausserdem würde ich dann auf der 2. Seite das ganze nach Relevanz brauchen, und ich glaub das geht ja nur mittels der Volltextsuche.
      bidgo - Benzin im Blut
      Wir wollen Dich und Deine Karre
      Videoblog & Bilderblog zu verschiedenen Bereichen

      Comment


      • #4
        Geht der Fulltext-Index auch über alle Spalten oder sind das mehrere Fulltext-Indizes?

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Comment


        • #5
          Nö der Fulltext-Index geht über alle 6 Spalten.
          Da hab ich keine einzel Fulltext-Indexe gesetzt.
          bidgo - Benzin im Blut
          Wir wollen Dich und Deine Karre
          Videoblog & Bilderblog zu verschiedenen Bereichen

          Comment


          • #6
            Dann fürchte ich wirst du das Problem wie von dir gewünscht nicht lösen können.

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Comment


            • #7
              Hmmmm? Das ist blöd.
              Schade, ich dachte es gäbe hier eine Lösung um das ganze effizienter zu machen.

              Naja, dennoch vielen Dank für die Mühe!
              bidgo - Benzin im Blut
              Wir wollen Dich und Deine Karre
              Videoblog & Bilderblog zu verschiedenen Bereichen

              Comment

              Working...
              X