Suche: Wildcards

In this board you can talk about general questions about phpMyFAQ

Moderator: Thorsten

fwhamm
Posts: 38
Joined: Mon Oct 06, 2003 10:07 am
Contact:

Suche: Wildcards

Post by fwhamm »

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?
- Live long and prosper!
- Query frontend for LDAP Server?
=> MpLDAP!
Thorsten
Posts: 15759
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Post by Thorsten »

Hallo Frank,

das mit den Wildcards funktioniert nur mit MySQL 4.0

bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
fwhamm
Posts: 38
Joined: Mon Oct 06, 2003 10:07 am
Contact:

Post by fwhamm »

Hallo Thorsten,

danke für die schnelle Antwort.
Thorsten wrote: das mit den Wildcards funktioniert nur mit MySQL 4.0
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).

Lässt Du evtl. einen Parser über die Suchbegriffe laufen, der den Stern filtert?

Viele Grüße

Frank
- Live long and prosper!
- Query frontend for LDAP Server?
=> MpLDAP!
Thorsten
Posts: 15759
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Post by Thorsten »

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
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
fwhamm
Posts: 38
Joined: Mon Oct 06, 2003 10:07 am
Contact:

Post by fwhamm »

Hallo Thorsten,
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.
ich habe mir die Funktion searchEngine in der functions.php malangesehen und dann eine Abfrage manuell nachvollzogen. Die Abfrage:

Code: Select all

SELECT id, lang, rubrik, thema, content FROM main_faqdata WHERE MATCH (keywords, thema,content) AGAINST ('summ*') AND active = 'yes';
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:

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';
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
Thorsten
Posts: 15759
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Post by Thorsten »

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
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
fwhamm
Posts: 38
Joined: Mon Oct 06, 2003 10:07 am
Contact:

Post by fwhamm »

Hallo Thorsten,
Thorsten wrote:Hi Frank,

das wäre eine Lösung, dass man in der Suchfunktion das ändert. Ich implementiere das in der 1.3.8 beta!
Danke! Das ist echt Super!

Grüße, Frank
- Live long and prosper!
- Query frontend for LDAP Server?
=> MpLDAP!
fwhamm
Posts: 38
Joined: Mon Oct 06, 2003 10:07 am
Contact:

Post by fwhamm »

Hallo Thorsten,
Thorsten wrote:
das wäre eine Lösung, dass man in der Suchfunktion das ändert. Ich implementiere das in der 1.3.8 beta!
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.

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()
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
- Live long and prosper!
- Query frontend for LDAP Server?
=> MpLDAP!
Thorsten
Posts: 15759
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Post by Thorsten »

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
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
fwhamm
Posts: 38
Joined: Mon Oct 06, 2003 10:07 am
Contact:

Post by fwhamm »

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.
Danke, echt super!

Viele Grüße, Frank
- Live long and prosper!
- Query frontend for LDAP Server?
=> MpLDAP!
fwhamm
Posts: 38
Joined: Mon Oct 06, 2003 10:07 am
Contact:

Post by fwhamm »

Hallo Thorsten,
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.
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!

Kleiner Hinweis:
In der Administration steht in der index.php in der Zeile 375:

Code: Select all

print mysql_get_client_info()
Da bringt er bei mir halt noch die 3.23.39

Grüße

Frank
- Live long and prosper!
- Query frontend for LDAP Server?
=> MpLDAP!
Thorsten
Posts: 15759
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Post by Thorsten »

Hallo Frank,

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
fwhamm
Posts: 38
Joined: Mon Oct 06, 2003 10:07 am
Contact:

Post by fwhamm »

Hallo Thorsten,
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.
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...

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'";
        }
Was hälst Du davon? Klar, der code ist verbesserungswürdig :)

Viele Grüße,

Frank
- Live long and prosper!
- Query frontend for LDAP Server?
=> MpLDAP!
Thorsten
Posts: 15759
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Post by Thorsten »

Hi Frank,

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
fwhamm
Posts: 38
Joined: Mon Oct 06, 2003 10:07 am
Contact:

Post by fwhamm »

Hallo Thorsten,
Thorsten wrote: ich guck mir das mal an. Dein Code fügt bei jedem Suchwort ein "*" an, oder?
Genau, das wars schon.

Grüße

Frank
- Live long and prosper!
- Query frontend for LDAP Server?
=> MpLDAP!
Post Reply