Suche mit AND und OR ???

Begonnen von _Mike_, 02 April 2003, 22:03:46

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

_Mike_

Leider ist es weder in eBoard noch mit den unterschiedlichsten Such-Modulen von phpnuke möglich nach mehreren Suchworten die nicht nacheinander stehen zu suchen! Gebe ich in eBoard z.B. "eBoard" und "phpnuke" in die SUchmaske ein, dann würde dieser Beitrag nicht gefunden, beide Worte kommen zwar im Beitrag vor, aber eben nicht aufeinanderfolgend! Sprich es ist weder AND noch OR möglich?!
Das kann ich kaum nachvollziehen, denn viele php-Foren, die auch auf mysql aufsetzen und auch mein Shopsystem kann dies ohne Probs.
Selbst wenn ich nun also sie Datenbank auf Volltext umstelle, dann wird nur nach OR gesucht (MATCH AGAINST) da AND erst an mysql 4.0.x möglich ist und selbst dort noch nicht fehlerfrei arbeitet (mysql 4 wird allerdings von sicherheitsbewußten Providern nicht eingesetzt).
Ist eine "vernünftige" Suchfunktion in eBoard angedacht und/oder kennt jemand ein Modul, welches in phpnuke eine AND Suche durchführt?

ciao ... michael

tequila

Kommt im nächsten eBoard, dauert aber noch etwas, sorry :(

(hmm ... man kann doch auch bei SQL 3.23 AND-Selects mache, oder irre ich?)

jubilee

Hallo !
Das ist sehr wohl möglich !
Man muss SQL natürlich mitteilen, das (!!) evt. etwas zwischen den
Wörtern liegt. Eine automatische volltextsuche in SQL gibts nicht
Versuch hier im Board mal folgendes
 
Zitateboard % phpnuke
Das % steht in SQL als Platzhalter für beliebig viele Zeichen.
Dann klappt auch die Suche hier nach mehreren Wörtern die NICHT zusammenstehen !
MfG
jubilee

tequila

Uiuiuiuiui .........
Freitag Morgen und Tequila lernt mal wieder etwas dazu, das wußte ich auch noch nicht so direkt, war mi nur recht sicher, das es geht.

Dankeschön  :D  

jubilee

Hallo nochmal !

@Tequila: ;)

@Others : Selbstredend, das das natürlich auch im normalen Suchmodul geht, nicht nur im eBoard ....

MfG
jubilee

_Mike_

Hi,
klasse!
Aber wie bringe ich den Besuchern bei statt +oder AND das % zu nutzen - und was mache ich mit denen, die einfach nur ein Leerzeichen zwischen die Wörter setzen, weil sie es von Google so gewohnt sind?
Gibt es da ne Lösung, wie man die Suche in index.php des Suchmodules umschreiben kann?

danke ... michael

[Editiert am 4/4/2003 von _Mike_]

jubilee

Hallo !
Dann musst Du die Eingabe der User noch parsen und die Leerzeichen
durch % ersetzen bzw. AND/+ rauslöschen.
MfG
jubilee
P.S Wenn der Suchstring z.B. in der Variable $suche steht,
dann kannst du über
 
Zitatarray_1=array("AND","and","+"," ");
array_2=array("%","%","%","%");
for($x=0;$x<4;$x++)
{
$suche=str_replace($array_1[$x],$array_2[$x],$suche);
}
AND gegen %, and gegen %, + gegen % und Leerzeichen gegen %
austauschen
jubilee


[Editiert am 5/4/2003 von SiteAdmin jubilee]

jubilee

Dazu noch einmal einen Nachtrag !
Wenn man diese Funktion passend in das Search-Modul einbaut. kann man nach mehreren Wörtern suchen und somit die Ergebnisse einschränken.
Leider bleibt die Reihenfolge der Begriffe wichtig.
Das bedeutet Suchbegriff : sehen hören ist nicht dasselbe wie der Suchbegriff : hören sehen.
Wer trotzdem die einmal experimetieren möchte :
in datei /modules/Search/index.php ca. ab Zeile 180 :
alt:
 
Zitatecho "</td></tr></table>";
        $query = addslashes($query);
        if ($type=="stories" OR !$type) {
 
neu :
 
Zitatecho "</td></tr></table>";
        $query = addslashes($query);
                $array_1=array("AND","and","+"," ");
                $array_2=array("%","%","%","%");
                for($x=0;$x<4;$x++)
                {
                $query=str_replace($array_1[$x],$array_2[$x],$query);
                }
         if ($type=="stories" OR !$type) {
 
MfG
jubilee