MyBB.de Forum
Suchfunktion soll standardmäßig mit AND statt OR suchen - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Archiv (https://www.mybb.de/forum/forum-57.html)
+--- Forum: MyBB 1.2.x und älter (https://www.mybb.de/forum/forum-27.html)
+---- Forum: Allgemeiner Support (https://www.mybb.de/forum/forum-36.html)
+---- Thema: Suchfunktion soll standardmäßig mit AND statt OR suchen (/thread-4327.html)



Suchfunktion soll standardmäßig mit AND statt OR suchen - Tored - 30.12.2006

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.


RE: Suchfunktion soll standardmäßig mit AND statt OR suchen - Michael - 30.12.2006

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'])); 



RE: Suchfunktion soll standardmäßig mit AND statt OR suchen - Tored - 31.12.2006

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.


RE: Suchfunktion soll standardmäßig mit AND statt OR suchen - Michael - 31.12.2006

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.


RE: Suchfunktion soll standardmäßig mit AND statt OR suchen - Tored - 31.12.2006

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.


RE: Suchfunktion soll standardmäßig mit AND statt OR suchen - Michael - 31.12.2006

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.


RE: Suchfunktion soll standardmäßig mit AND statt OR suchen - Tored - 31.12.2006

Vielen Dank jetzt scheint es vollständig zu funktionieren.
Ich verwende übringes MySQL 5.0.18