Neu SQL-Fehler bei Volltextsuche und Sonderzeichen

hazelly

Aktives Mitglied
16. November 2023
10
3
Hallo!

Wir haben einen möglicherweise einen Bug entdeckt (Shop-Version 5.2.4). Wenn in dem Standard-Suchfeld unter Nutzung der Volltextsuche ein String mit Sonderzeichen ">" eingegeben wird, dann kommt es zu einem SQL-Fehler.

Nachfolgendes Beispiel mit der Suche nach "brot >":
SQL:
Error executing query INSERT INTO tsuchcachetreffer
                    SELECT kSuchCache, kArtikelTMP, ROUND(MAX(score) * -10)
                    FROM ( SELECT 262400 AS kSuchCache,
                IF(tartikel.kVaterArtikel > 0, tartikel.kVaterArtikel, tartikel.kArtikel) AS kArtikelTMP, MATCH (tartikel.cName, tartikel.cSeo, tartikel.cSuchbegriffe, tartikel.cArtNr, tartikel.cKurzBeschreibung, tartikel.cBeschreibung, tartikel.cBarcode, tartikel.cISBN, tartikel.cHAN)
                    AGAINST (brot > IN NATURAL LANGUAGE MODE)  AS score
                FROM tartikel
                WHERE MATCH (tartikel.cName, tartikel.cSeo, tartikel.cSuchbegriffe, tartikel.cArtNr, tartikel.cKurzBeschreibung, tartikel.cBeschreibung, tartikel.cBarcode, tartikel.cISBN, tartikel.cHAN)
                    AGAINST (brot* >* IN BOOLEAN MODE)  AND (tartikel.cLagerBeachten != Y
                    OR tartikel.fLagerbestand > 0
                    OR (tartikel.cLagerVariation = Y
                        AND (
                            SELECT MAX(teigenschaftwert.fLagerbestand)
                            FROM teigenschaft
                            INNER JOIN teigenschaftwert ON teigenschaftwert.kEigenschaft = teigenschaft.kEigenschaft
                            WHERE teigenschaft.kArtikel = tartikel.kArtikel
                        ) > 0
                    ) OR tartikel.cLagerKleinerNull = Y)  ) AS i
                    LEFT JOIN tartikelsichtbarkeit
                        ON tartikelsichtbarkeit.kArtikel = i.kArtikelTMP
                        AND tartikelsichtbarkeit.kKundengruppe = 1
                    WHERE tartikelsichtbarkeit.kKundengruppe IS NULL
                    GROUP BY kSuchCache, kArtikelTMP LIMIT 300
SQLSTATE[42000]: Syntax error or access violation: 1064 syntax error, unexpected $end, expecting FTS_TERM or FTS_NUMB or *

Je nach Suchanfrage wird manchmal auch folgender Fehler ausgespielt: SQLSTATE[42000]: Syntax error or access violation: 1064 syntax error, unexpected >

Die Suche funktioniert zum Glück trotzdem, allerdings häufen sich die Einträge im Log diesbezüglich und verursachen eine große Datenmenge.

Ich habe nun in /includes/src/Filter/States/BaseSearchQuery.php in Zeile 906 das Sonderzeichen ">" ergänzt, das somit vom Query entfernt wird.

Viele Grüße
Anna-Lena
 

Ähnliche Themen