Erweiterte Suchfunktion

In this board you can talk about general questions about phpMyFAQ

Moderator: Thorsten

deMischa
Posts: 13
Joined: Tue Mar 01, 2011 9:55 am

Erweiterte Suchfunktion

Post by deMischa »

Hi Thorsten

Gibt es eigentlich irgendeine Möglichkeit, die Suchfunktion zu erweitern? Also zum Beispiel Suchbegriffe ausschließen, oder nur nach Keywords suchen oder so?
Auch sehr schön wäre ein Ajax-Autocompleter der die Suche automatisch ergänzt.

ist da was geplant oder vielleicht schon umgesetzt und ich finde es nur nicht?

Grüße
deMischa
Thorsten
Posts: 15724
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Re: Erweiterte Suchfunktion

Post by Thorsten »

Hi,

für die Suche kannst du das verwenden: http://dev.mysql.com/doc/refman/5.1/en/ ... olean.html

Bei der Ajaxsuche haben wir derzeit noch keinen Autocompleter drin.

bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
deMischa
Posts: 13
Joined: Tue Mar 01, 2011 9:55 am

Re: Erweiterte Suchfunktion

Post by deMischa »

Danke für die schnelle Antwort.

Ich habe mit dem Parametern schon viel rumprobiert, aber sie funktionieren bei mir überhaupt nicht. Muss man diesen Boolean Mode irgendwie aktivieren?
Schau mal in den Screenshot. Warum wird denn hier sonst der imaginäre "Laufzeitfehler 80" auch angezeigt?
Oder wenn ich nach "*fehler" suche erhalte ich gar keinen Treffer.

Kannst du mir nen Tipp geben?

Gruß, deMischa
You do not have the required permissions to view the files attached to this post.
Thorsten
Posts: 15724
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Re: Erweiterte Suchfunktion

Post by Thorsten »

Hi,

da ich deine Daten nicht kenne, kann ich dir auch nicht sagen, was bei deinen Daten da genau passiert...

bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
deMischa
Posts: 13
Joined: Tue Mar 01, 2011 9:55 am

Re: Erweiterte Suchfunktion

Post by deMischa »

Hier mein Suchalgorithmus:

Code: Select all

$query = sprintf("
                SELECT
                    %s
                FROM 
                    %s %s %s
                WHERE
                    MATCH (%s) AGAINST ('%s' IN BOOLEAN MODE)
                    %s
                    %s",
                $columns,
                $this->getTable(),
                $this->getJoinedTable(),
                $this->getJoinedColumns(),
                $this->getMatchingColumns(),
                $this->dbHandle->escape_string($searchTerm),
                $this->getConditions(),
                $orderBy);
Habe nur die beiden * rausgenommen, der Rest ist Standard

Ich habe mal das Query ausgeben lassen, dass sieht dann so aus wie in Screenshot 1.
Wenn den gleichen SQL-Befehl in phpMyAdmin ausführe, ist das Ergebnis ein anderes (Screenshot 2).
Habe das mit der neuen 2.7.0 Alpha getestet, weil das ja laut deinem Eintrag in diesem Topic viewtopic.php?f=3&t=10979 in der 2.6 noch nicht funktioniert.

Wäre toll, wenn du mir / dir das erklären könntest :|
Wenn ich dabei irgendwie unterstützen kann, sag mir gerne Bescheid!

deMischa
You do not have the required permissions to view the files attached to this post.
Thorsten
Posts: 15724
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Re: Erweiterte Suchfunktion

Post by Thorsten »

Hi,

ich schau mir das Problem an.

bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
deMischa
Posts: 13
Joined: Tue Mar 01, 2011 9:55 am

Re: Erweiterte Suchfunktion

Post by deMischa »

Danke! Hier noch ein Hinweis:
Wenn ich in der inc\PMF_Search\Database\Mysql.php statt der Query mit den Platzhaltern einfach eine feste query eingebe, so wie sie von deinem Script generiert wurde, dann klappt es. Scheint für mich so, als würden die Sonderzeichen in dem Query herausgefiltert werden.

Danke für deine Bemühungen! :D
Thorsten
Posts: 15724
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Re: Erweiterte Suchfunktion

Post by Thorsten »

Hi,
deMischa wrote:Scheint für mich so, als würden die Sonderzeichen in dem Query herausgefiltert werden.
das könnte auch das Problem sein... :-)

bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
Thorsten
Posts: 15724
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Re: Erweiterte Suchfunktion

Post by Thorsten »

Hi,

bist du sicher, dass du im 2.7er Code reingeschaut hast. Wenn ich in der 2.7 nach

Code: Select all

"test"
suche, kommt das:

Code: Select all

SELECT faqdata.id AS id, faqdata.lang AS lang, faqdata.solution_id AS solution_id, faqcategoryrelations.category_id AS category_id, faqdata.thema AS question, faqdata.content AS answer FROM faqdata LEFT JOIN faqcategoryrelations ON faqdata.id = faqcategoryrelations.record_id AND faqdata.lang = faqcategoryrelations.record_lang WHERE MATCH (faqdata.thema, faqdata.content, faqdata.keywords) AGAINST ('*"test"*' IN BOOLEAN MODE) AND faqdata.lang = 'de' AND faqdata.active = 'yes' 
Die * kommen u.a. von der verbesserten Suche.

bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
JochenS
Posts: 121
Joined: Wed Feb 16, 2011 3:51 pm
Location: Schönaich
Contact:

Re: Erweiterte Suchfunktion

Post by JochenS »

Ich häng mich jetzt einfach dran. Was passiert denn, bei "test Thorsten", +test-thorsten, oder +test+thorsten. Sorry, ich bin was php ein newbee. Wo habt Ihr denn den debug code eingefügt?
Our public FAQ is proudly powered by phpMyFAQ: http://vhtfaq.ge51.honeywell.de/
JochenS
Posts: 121
Joined: Wed Feb 16, 2011 3:51 pm
Location: Schönaich
Contact:

Re: Erweiterte Suchfunktion

Post by JochenS »

Hi Thorsten,

heureka! Auf der von Dir verlinkten Seite der MySQL "Boolean Full-Text Searches" gibt es einen Kommentar von Markus Loponen:
For those of you who interface MySQL with PHP and wonder what the problem is with getting "exact phrases" working properly, here's the way to go.

$query= "SELECT code, category, header, date FROM articles WHERE MATCH (text,header,summary) AGAINST ('" . stripslashes (str_replace (""", "\"", ($_POST['keywords']))) . "' IN BOOLEAN MODE)";

PHP, or some setups or with some browsers, convert double quotes from POST data to their HTML-equivalents even without being asked to do that. The above will fix the issue. Stripslashes() is optional, I prefer to keep it in to keep things looking clean, though the \" doesn't seem to break the boolean literal search.


Das wäre doch was für die 2.7, oder?
Our public FAQ is proudly powered by phpMyFAQ: http://vhtfaq.ge51.honeywell.de/
Thorsten
Posts: 15724
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Re: Erweiterte Suchfunktion

Post by Thorsten »

Hi,

jep, den hatte ich wohl bisher übersehen. :-)

bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
Thorsten
Posts: 15724
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Re: Erweiterte Suchfunktion

Post by Thorsten »

phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
deMischa
Posts: 13
Joined: Tue Mar 01, 2011 9:55 am

Re: Erweiterte Suchfunktion

Post by deMischa »

Hallo nochmal

Cool, danke für die Änderung. Ich habe jetzt die beiden geänderten Dateien bei mir eingefügt, und deine Änderungen haben auch Auswirkungen auf meinen String. Die "-Zeichen werden nun nicht mehr gefiltert.

Leider scheinen aber die BOOLESCHEN Parameter immer noch nicht zu funtktionieren. Anbei noch mal ein Screenshot, der das belegt.
Nun doch ein Missverständnis meinerseits, oder kann das jemand erklären?
You do not have the required permissions to view the files attached to this post.
Thorsten
Posts: 15724
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Re: Erweiterte Suchfunktion

Post by Thorsten »

Hi,

ich schau mir das nochmal genau an, der Fix oben war ein erster Versuch. :-)

bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
Post Reply