Seite 1 von 1

Frage zu den Suchenfunktionen

Verfasst: 15.03.2004 19:49
von jasc
Also ich weiß jetzt nicht, ob das schon mal jemand erwähnt hat, ich kann mich nicht dran erinnern.
Also wenn ich hier im Forum nach message_die() suche, geht das ohne Probleme. Gebe ich das selbe allerdings bei der KB-Suche ein, erhalte ich folgenden Fehler:
Fehlermeldung hat geschrieben: Fehler beim Ausführen der Suchanfrage

DEBUG MODE

SQL Error : 1064 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 ')), 1, 0) AS relevance FROM kb_articles a JOIN kb_categories

SELECT a.category_id, c.title AS category_title, a.id, a.title, a.description, a.create_time, a.author, a.author_user_id, a.author_email, (match(a.title, a.description, a.content) AGAINST('message_die()' IN BOOLEAN MODE)) + count(distinct k.keyword) + if(((a.title LIKE '%message_die%')))), 1, 0) AS relevance FROM kb_articles a JOIN kb_categories c ON (a.category_id = c.id) LEFT JOIN kb_keywords k ON (a.id = k.article_id AND ((k.keyword LIKE 'message_die'))))) WHERE match(a.title, a.description, a.content) AGAINST('message_die()' IN BOOLEAN MODE) OR ((a.keywords LIKE '%message_die%')))) GROUP BY a.id ORDER BY relevance DESC LIMIT 10

Line : 30
File : /webs/sascha/root/www/phpbb.de/doku/kb/search.php
Ich gehe davon aus, dass die beiden Klammern () den Fehler verursachen. Jetzt wollte ich einfach mal wissen, ob das ein Bug in der KB ist oder ob das einfach an einer unterschiedlich programmierten Suchfunktion liegt?

Schon mal danke für eure Antworten :-).


Grüße,
Markus aka jasc

Verfasst: 16.03.2004 16:59
von itst
Die KB benutzt eine ähnliche Suche wie das Forum.

Dieser Fehler sieht mir wie ein Bug im Parsing der Suchterme aus. Will dig into it.

Verfasst: 19.03.2004 19:30
von Pyramide
Das Problem liegt daran, daß Klammern für Suchbedingungen à la php AND (documentation OR manual) verwendet werden - feldname='message_die' OR () ist in SQL schließlich auch nicht gültig. Da ich momentan nicht die Zeit habe, die Funktion genauer unter die Lupe zu nehmen, werden ( und ) jetzt aus dem Suchstring entfernt. Es ist sowieso generell zu empfehlen, Sonderzeichen u.ä. wegzulassen, da sonst nur Ergebnisse gefunden werden, in denen exakt diese Zeichenkombination vorkommt