Suche: Wildcards
Moderator: Thorsten
Suche: Wildcards
Soweit ich es verstanden habe wird die Volltextsuche von MySQL verwendet. Ich habe daher versucht die unterstützten Wildcards zu verwenden (z.B. 'server*').
Allerdings erhalte ich damit keine Treffer (obwohl es z.B. einen Eintrag mit 'Serverliste' gibt).
Kann ich Wildcards in der Volltextsuche verwenden und wenn ja: Wie lautet die Syntax?
Allerdings erhalte ich damit keine Treffer (obwohl es z.B. einen Eintrag mit 'Serverliste' gibt).
Kann ich Wildcards in der Volltextsuche verwenden und wenn ja: Wie lautet die Syntax?
Hallo Frank,
das mit den Wildcards funktioniert nur mit MySQL 4.0
bye
Thorsten
das mit den Wildcards funktioniert nur mit MySQL 4.0
bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
amazon.de Wishlist
Hallo Thorsten,
danke für die schnelle Antwort.
Lässt Du evtl. einen Parser über die Suchbegriffe laufen, der den Stern filtert?
Viele Grüße
Frank
danke für die schnelle Antwort.
ich habe 4.0.12, da müsste es eigentlich funktionieren (tut es auch bei einer eigenen Anwendung, die ich durch phpMyFAQ ablösen möchte).Thorsten wrote: das mit den Wildcards funktioniert nur mit MySQL 4.0
Lässt Du evtl. einen Parser über die Suchbegriffe laufen, der den Stern filtert?
Viele Grüße
Frank
Hi Frank,
nein, ich filtere das eigentlich nicht, aber ich hab das noch nie mit MySQL 4 ausprobiert. Eventuell muss man aber an der Suchfunktion ein bisschen was umbauen, da müsste ich mal in das MySQL Manual schauen.
bye
Thorsten
nein, ich filtere das eigentlich nicht, aber ich hab das noch nie mit MySQL 4 ausprobiert. Eventuell muss man aber an der Suchfunktion ein bisschen was umbauen, da müsste ich mal in das MySQL Manual schauen.
bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
amazon.de Wishlist
Hallo Thorsten,
bringt kein Ergebnis, obwohl es einen Eintrag mit dem Wort 'SUMMUM' (eine Anwendung bei uns) gibt. Ich habe auch erst mal etwas gebraucht und im MySQL manual nachschauen müssen bis ich die Crux gefunden habe: Für die Wildcardsuche oder + oder - etc. muss die Abfrage im boolean Mode gestellt werden:
Das bringt dann die Zeile mit dem gewünschten Ergebnis. Allerdings gibt es den Boolean Mode erst ab Version 4.0.1. Vielleicht kanns Du ja in der 1.3.8 noch das mit dem Boolean Mode einbauen (und ggf. die Serverversion vorher mit mysql_get_server_info() checken?)
Viele Grüße
Frank
ich habe mir die Funktion searchEngine in der functions.php malangesehen und dann eine Abfrage manuell nachvollzogen. Die Abfrage:Thorsten wrote:Hi Frank,
nein, ich filtere das eigentlich nicht, aber ich hab das noch nie mit MySQL 4 ausprobiert. Eventuell muss man aber an der Suchfunktion ein bisschen was umbauen, da müsste ich mal in das MySQL Manual schauen.
Code: Select all
SELECT id, lang, rubrik, thema, content FROM main_faqdata WHERE MATCH (keywords, thema,content) AGAINST ('summ*') AND active = 'yes';
Code: Select all
SELECT id, lang, rubrik, thema, content FROM main_faqdata WHERE MATCH (keywords, thema,content) AGAINST ('summ*' IN BOOLEAN MODE) AND active = 'yes';
Viele Grüße
Frank
Hi Frank,
das wäre eine Lösung, dass man in der Suchfunktion das ändert. Ich implementiere das in der 1.3.8 beta!
bye
Thorsten
das wäre eine Lösung, dass man in der Suchfunktion das ändert. Ich implementiere das in der 1.3.8 beta!
bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
amazon.de Wishlist
Hallo Thorsten,
In der admin/index.php verwendest Du die Funktion.
Wenn ich die mit der Funktion
ersetze, dann erhalte ich die korrekte Version "MySQL 4.0.12-max-nt".
Allerdings hatte ich damals die 3.x per Setup installiert und später einfach nur die Filestruktur ersetzt - vielleicht schreibt MySQL bei der Installation einen Eintrag in die Registry und es liegt daran.
Evtl. wäre es einfacher, den BOOLEAN Mode mit einer Einstellung in der Konfiguration aktivieren zu können.
Viele Grüße
Frank
Mir ist gerade aufgefallen, dass in der Administration bei MySQL Version " MySQL 3.23.39" steht. Ich setze aber mit Sicherheit die 4.0.12 ein.Thorsten wrote:
das wäre eine Lösung, dass man in der Suchfunktion das ändert. Ich implementiere das in der 1.3.8 beta!
In der admin/index.php verwendest Du die Funktion
Code: Select all
mysql_get_client_info()Wenn ich die mit der Funktion
Code: Select all
mysql_get_server_info()Allerdings hatte ich damals die 3.x per Setup installiert und später einfach nur die Filestruktur ersetzt - vielleicht schreibt MySQL bei der Installation einen Eintrag in die Registry und es liegt daran.
Evtl. wäre es einfacher, den BOOLEAN Mode mit einer Einstellung in der Konfiguration aktivieren zu können.
Viele Grüße
Frank
Hi Frank,
die Suche der phpMyFAQ 1.3.8 beta überprüft nun die MySQL-Server-Version und wenn Sie MySQL größer als 4.0.1 entdeckt, unterstützt sie den Boolean Mode.
bye
Thorsten
die Suche der phpMyFAQ 1.3.8 beta überprüft nun die MySQL-Server-Version und wenn Sie MySQL größer als 4.0.1 entdeckt, unterstützt sie den Boolean Mode.
bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
amazon.de Wishlist
Hallo Thorsten,
Kleiner Hinweis:
In der Administration steht in der index.php in der Zeile 375:
Da bringt er bei mir halt noch die 3.23.39
Grüße
Frank
Ich habe gerade die 1.3.8 RC2 installiert. Die Volltextsuche über searchEngine() funktioniert und erkennt die richtige MySQL Funktion - bei mir die 4.0.12 und verwendet dann auch den Boolean Mode. Danke!Thorsten wrote:die Suche der phpMyFAQ 1.3.8 beta überprüft nun die MySQL-Server-Version und wenn Sie MySQL größer als 4.0.1 entdeckt, unterstützt sie den Boolean Mode.
Kleiner Hinweis:
In der Administration steht in der index.php in der Zeile 375:
Code: Select all
print mysql_get_client_info()Grüße
Frank
Hallo Frank,
danke für den Hinweis, ich werde in der finalen Version der 1.3.8 Client- und Serverversion anzeigen lassen...
bye
Thorsten
danke für den Hinweis, ich werde in der finalen Version der 1.3.8 Client- und Serverversion anzeigen lassen...
bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
amazon.de Wishlist
Hallo Thorsten,
Was hälst Du davon? Klar, der code ist verbesserungswürdig
Viele Grüße,
Frank
ich habe mir gerade die Funktion searchEngine angesehen und eine kleine Änderung vorgenommen. Dadurch brauch der Anwender nicht jedesmal daran zu denken den Stern im Boolean Mode anzugeben. Bei uns denkt sowieso keiner daran, dass das überhaupt möglich ist...Thorsten wrote: die Suche der phpMyFAQ 1.3.8 beta überprüft nun die MySQL-Server-Version und wenn Sie MySQL größer als 4.0.1 entdeckt, unterstützt sie den Boolean Mode.
Code: Select all
if (mysql_check("4.0.1") == FALSE) {
// Search with MySQL 3.23.23+
$query = "SELECT id, lang, rubrik, thema, content FROM ".$sqltblpre."faqdata WHERE MATCH (thema,content,keywords) AGAINST ('".$begriff."') AND active = 'yes'";
}
else {
// Search with MySQL 4.0.1+
$begriffArray = explode(" ", $begriff);
$newBegriffArray = array();
foreach ($begriffArray as $row) {
if ( substr($row, strlen($row)-1, 1) != "*" ) $row = $row . "*";
$newBegriffArray[] = $row;
}
$begriff = implode(" ", $newBegriffArray);
$query = "SELECT id, lang, rubrik, thema, content FROM ".$sqltblpre."faqdata WHERE MATCH (thema,content,keywords) AGAINST ('".$begriff."' IN BOOLEAN MODE) AND active = 'yes'";
}
Viele Grüße,
Frank
Hi Frank,
ich guck mir das mal an. Dein Code fügt bei jedem Suchwort ein "*" an, oder?
bye
Thorsten
ich guck mir das mal an. Dein Code fügt bei jedem Suchwort ein "*" an, oder?
bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
amazon.de Wishlist