MyBB.de Forum

Normale Version: Suche nach Wörtern mit "|" (500|500)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

in meinem MyBB-Forum ist es nicht möglich nach Ausdrücken zu suchen, die die Pipe beinhalten, also dieses Zeichen: |

So könnt ihr das auch selbst testen: 500|500

Mal sehen ob ihr 500|500 über die Suche findet. In meinem Forum funktioniert es leider nicht, wird aber benötigt. Und auch hier, in diesem Forum, erhalte ich die Meldung: "Sorry, aber nach deinen Angaben wurden keine Ergebnisse gefunden. Bitte ändere deine Suchbegriffe und versuche es erneut."

Damit man es besser (vollständiger) testen kann habe ich 500|500 auch in den Titel dieses Themas integriert.

EDIT
Ich habe auch den "Fehler" gefunden:
PHP-Code:
#/inc/functions_search.php:170 in Funktion clean_keywords($keywords)
$keywords preg_replace("#([\[\]\|\.\,:'])#s"" "$keywords);

# ähnlicher Code auch in Zeile 190! 

Ist wahrscheinlich eine Sicherheitsfunktion (da "clean_keywords"), dennoch brauche ich die Suche nach "|". Ich schau mal ob es da eine Möglichkeit gibt. Das soll euch aber nicht am Antworten hindern. Smile

EDIT2
Also, wie es aussieht, verwendet die MyBB-Suche "nur" die LIKE-Direktive von SQL. Die kennt nur zwei Spezialzeichen, und zwar "%" (matcht beliebig viele Zeichen, auch gar keine Zeichen) und "_" (matcht genau ein beliebiges Zeichen). Die Funktionen, die die Suchwörter "entschärfen" (cleanen), entfernen somit, m.E., viel zu viele Zeichen. Es werden viele Zeichen entfernt/maskiert, die für die LIKE-Direktive gar keine besondere Bedeutung haben.
Zumindest ist das mein erster Eindruck nach paar Minuten Recherche.

Informationen zur LIKE-Direktive: http://dev.mysql.com/doc/refman/5.0/en/s...tions.html


MfG, bmaker
Welche Suche ist bei dir in den Foreneinstellungen ausgewählt? Die Standard- oder die Volltextsuche? Die Standardsuche arbeitet mit LIKE, die Volltextsuche mit MATCH AGAINST.
Ich habe die Suche in den Foreneinstellungen eben mal auf Full Text umgestellt. Bisher war also die Standardsuche aktiv.

Wenn ich jetzt mit Full Text Suche nach "322|233" suche erhalte ich die Meldung:
"Ein oder mehrere Suchbegriffe sind kürzer als erlaubt. Die Minimallänge eines Suchbegriffs ist 4 Zeichen."

Und diese Meldung stimmt ja irgendwie nicht, es handelt sich ja um 7 Zeichen. Selbst wenn ich das Trennzeichen "|" wegnehme, sind noch 6 Ziffern übrig.

Zitat:Die Standardsuche arbeitet mit LIKE, die Volltextsuche mit MATCH AGAINST.
Die Maskierung der jeweiligen Spezialzeichen dieser beiden Direktiven kann man ja davon abhängig machen, welche Suche tatsächlich eingestellt ist. Es macht ja keinen Sinn bei der Standardsuche dieselben Zeichen zu maskieren wie bei der Full Text-Suche.

MfG, bmaker
Dass du die Fehlermeldung bei der Volltextsuche erhältst ist korrekt, da die Pipe hier "oder" bedeutet. Das heißt du suchst Beiträge, die 322 oder 233 beinhalten und somit hat jeder "Begriff" nur drei Zeichen.

Du kannst die Art der Suche ganz einfach abfragen:
PHP-Code:
if($mybb->settings['searchtype'] == "fulltext") {
    
// Volltextsuche ist aktiv
} else {
    
//Standardsuche ist aktiv