Hallo,
ich habe gerade mein altes mybb von 1.0.2 auf 1.2.2 geupdatet. Der Grund war die verbesserte Suchfunktion, da nun das Suchen nach 2 Wörtern gleichzeitig möglich ist. Was ich jedeoch festgestellt habe ist, dass standardmäßig mit OR statt AND gesucht wird.
Wie kann ich machen, dass man dieses AND zwischen den Suchbegriffen nicht mehr eingeben muss, sondern er automatisch mit AND arbeitet?
Ich bedanke mir für eure Hilfe.
Quick and dirty (nicht getestet): Öffne die Datei search.php und suche nach:
PHP-Code:
$search_data = array(
"keywords" => $mybb->input['keywords'],
"author" => $mybb->input['author'],
"postthread" => $mybb->input['postthread'],
"matchusername" => $mybb->input['matchusername'],
"postdate" => $mybb->input['postdate'],
"pddir" => $mybb->input['pddir'],
"forums" => $mybb->input['forums'],
"findthreadst" => $mybb->input['findthreadst'],
"numreplies" => $mybb->input['numreplies']
);
Darüber einfügen:
PHP-Code:
$mybb->input['keywords'] = str_replace(" ", " AND ", trim($mybb->input['keywords']));
Danke funktioniert. Mybb sucht jetzt immer mit AND.
OR ist damit nicht möglich, sollte ich es brauchen, kann ich ja einfach die Zeile auskommentieren.
EDIT: Ganz so funktioniert es leider doch nicht. Suche ich nämlich jetzt nach Wörtern in Anführungszeichen, also zusammengesetzten Ausdrücken wie "damit nicht möglich", findet er mit eingefügter Zeile nichts mehr. Ich muss es erst auskommentieren.
Wie funktioniert die Suche eigentlich hier im Board? Gebe ich (in dieser Suche ohne die Anführungszeichen) "php mysql" ein, findet er einen einzigen Thread. Verbinde ich die Wörter mit AND, findet er 14 Suchergebnisseiten, verbinde ich die Wörter mit OR, findet er 128 Suchergebnisseiten. Wieso sucht das Board hier nicht standardmäßig mit OR? So wie ich das sehe, sucht das Board hier standardmäßig nach zusammengesetzten Ausdrücken, die Wörter php mysql müssen also direkt hintereinander stehen und das scheint nur in einem Thread der Fall zu sein.
Tored schrieb:EDIT: Ganz so funktioniert es leider doch nicht. Suche ich nämlich jetzt nach Wörtern in Anführungszeichen, also zusammengesetzten Ausdrücken wie "damit nicht möglich", findet er mit eingefügter Zeile nichts mehr. Ich muss es erst auskommentieren.
Ersetze die eingefügte Zeile durch diesen Code:
PHP-Code:
<?php
$mybb->input['keywords'] = str_replace(" ", " AND ", trim($mybb->input['keywords']));
function make_spaces($val) {
$val = "\"".str_replace(" AND", " ", $val)."\"";
return $val;
}
$mybb->input['keywords'] = preg_replace_callback('#"(.*)"#Uis', create_function('$matches', 'return make_spaces($matches[1]);'), $mybb->input['keywords']);
?>
Tored schrieb:Wie funktioniert die Suche eigentlich hier im Board? Gebe ich (in dieser Suche ohne die Anführungszeichen) "php mysql" ein, findet er einen einzigen Thread. Verbinde ich die Wörter mit AND, findet er 14 Suchergebnisseiten, verbinde ich die Wörter mit OR, findet er 128 Suchergebnisseiten. Wieso sucht das Board hier nicht standardmäßig mit OR? So wie ich das sehe, sucht das Board hier standardmäßig nach zusammengesetzten Ausdrücken, die Wörter php mysql müssen also direkt hintereinander stehen und das scheint nur in einem Thread der Fall zu sein.
Die Suche hier im Forum wurde nicht modifiziert, somit sollte sich die Suchfunktion wie in allen anderen Foren auch verhalten, die die Volltextsuche einsetzen.
Danke für deine Hilfe. Dieser Code funktioniert schon wesentlich besser, allerdings funktioniert OR jetzt immer noch nicht richtig.
Zitat:Die Suche hier im Forum wurde nicht modifiziert, somit sollte sich die Suchfunktion wie in allen anderen Foren auch verhalten, die die Volltextsuche einsetzen.
Dann verstehe ich nicht ganz, wieso sich die Suche bei mir anders verhält.
Füge unter dem neuen Code noch diese Zeile ein:
PHP-Code:
$mybb->input['keywords'] = str_replace("AND OR AND", "OR", trim($mybb->input['keywords']));
Der ganze Code ist nicht schön, sollte aber seinen Zweck erfüllen.
Dass deine Suche anders reagiert könnte z.B. an unterschiedlichen MySQL-Versionen liegen. Ich kann dir 100%ig versichern, dass an der Suche hier nichts geändert wurde.
Vielen Dank jetzt scheint es vollständig zu funktionieren.
Ich verwende übringes MySQL 5.0.18