Page 1 of 2

[Erledigt] 2.0 RC2 - Filter funktioniert nicht

Posted: Wed Dec 31, 2014 1:29 am
by robert
Habe 2.0 RC2 installiert. Läuft tadellos.

Heute wollte ich in "Einträge bearbeiten" einen Artikel suchen. Die Einschränkung auf Kategorien funktioniert. Gebe ich jedoch in "Inhalt" einen Begriff ein und klicke auf "Los" werden trotzdem weiterhin alle bis dahin aufgelisteten Artikel angezeigt.

Habe es mit kurzen Begriff und auch längeren (10 Buchstaben) mit und ohne Wildcard * probiert. Hilft alles nichts.

Habt ihr eine Idee, was ich ausprobieren kann oder woran das liegen könnte?

Liebe Grüße
Robert

Re: 2.0 RC2 - Filter funktioniert nicht

Posted: Wed Dec 31, 2014 11:12 am
by bernd_d
Nö, gerade mal getestet. Wenn ich bei mir nach "Ridgecrest" suche, kommen auch wirklich nur Beiträge, die diesen Begriff enthalten. Nach was genau suchst du denn? Theoretisch müssten die gleichen Beiträge ja auch im Frontend gesucht/gefunden werden, da es die gleiche Suche ist.

Problematisch ist an der Suche, dass auch HTML-Tags/Links etc. durchsucht werden. Wenn man einen Begriff sucht, der auch darin vorkommt, dann sind die Chancen wirklich leider nahezu gleich 0, etwas sinnvolles zu finden.

Irgendjemand hier im Forum wollte mal einen Such-Index programmieren, der HTML-Code rauswirft, damit man bessere Suchergebnisse erhält, aber keine Ahnung wie weit das schon gediegen ist.

Re: 2.0 RC2 - Filter funktioniert nicht

Posted: Wed Dec 31, 2014 12:40 pm
by robert
Gerade nochmals probiert. Suchbegriff "Siemens" (suche alte Artikel). Im Frontend listet er genau die Artikel auf - im Backend werden alle angezeigt.

Seltsam...

Falls es etwas hilft, die URL mit der der Suchbegriff im Backend aufgerufen wird bzw. die Filterung gestartet:

Code: Select all

..../blog/serendipity_admin.php?serendipity%5Baction%5D=admin&serendipity%5BadminModule%5D=entries&serendipity%5BadminAction%5D=editSelect&serendipity%5Bfilter%5D%5Bauthor%5D=&serendipity%5Bfilter%5D%5Bisdraft%5D=all&serendipity%5Bfilter%5D%5Bcategory%5D=&serendipity%5Bfilter%5D%5Bbody%5D=Siemens&go=Los%21&serendipity%5Bsort%5D%5Border%5D=timestamp&serendipity%5Bsort%5D%5Bordermode%5D=DESC&serendipity%5Bsort%5D%5BperPage%5D=12

Re: 2.0 RC2 - Filter funktioniert nicht

Posted: Wed Dec 31, 2014 1:10 pm
by Timbalu
Auf meinem ISO-8859-1 Testblog habe ich folgendes Verhalten

- mit plain Ascii Siemens

Code: Select all

/serendipity_admin.php?serendipity[action]=admin&serendipity[adminModule]=entries&serendipity[adminAction]=editSelect&serendipity[filter][author]=&serendipity[filter][isdraft]=all&serendipity[filter][category]=&serendipity[filter][body]=Siemens&go=Los!&serendipity[sort][order]=timestamp&serendipity[sort][ordermode]=DESC&serendipity[sort][perPage]=12
sucht man nach einem Umlaut

Code: Select all

/serendipity_admin.php?serendipity%5Baction%5D=admin&serendipity%5BadminModule%5D=entries&serendipity%5BadminAction%5D=editSelect&serendipity%5Bfilter%5D%5Bauthor%5D=&serendipity%5Bfilter%5D%5Bisdraft%5D=all&serendipity%5Bfilter%5D%5Bcategory%5D=&serendipity%5Bfilter%5D%5Bbody%5D=T%FCcher&go=Los%21&serendipity%5Bsort%5D%5Border%5D=timestamp&serendipity%5Bsort%5D%5Bordermode%5D=DESC&serendipity%5Bsort%5D%5BperPage%5D=12
wird die url codiert.

Warum dies nun bei dir (trotz UTF-8) auch mit plain Siemens entsteht, weiß ich gerade nicht.

Auf meinem UTF-8 Testblog wird in allen Fällen nichts verwandelt.

(Das erstmal unabhängig von eventuellen Suchergebnissen)
Im Frontend listet er genau die Artikel auf - im Backend werden alle angezeigt.
Die URL-Kodierung ist wahrscheinlich der Grund dafür..., denn dein Frontend sagt:

Code: Select all

/blog/index.php?serendipity[action]=search&serendipity[searchTerm]=Siemens&serendipity[searchButton]=Suche
Setzt du nun anstelle deiner UrL im Backend meiner erstere ein, so wird dir wahrscheinlich auch ein korrektes Ergebnis angezeigt.

Re: 2.0 RC2 - Filter funktioniert nicht

Posted: Wed Dec 31, 2014 1:21 pm
by bernd_d
robert wrote:Gerade nochmals probiert. Suchbegriff "Siemens" (suche alte Artikel). Im Frontend listet er genau die Artikel auf - im Backend werden alle angezeigt.

Seltsam...

Falls es etwas hilft, die URL mit der der Suchbegriff im Backend aufgerufen wird bzw. die Filterung gestartet:

Code: Select all

..../blog/serendipity_admin.php?serendipity%5Baction%5D=admin&serendipity%5BadminModule%5D=entries&serendipity%5BadminAction%5D=editSelect&serendipity%5Bfilter%5D%5Bauthor%5D=&serendipity%5Bfilter%5D%5Bisdraft%5D=all&serendipity%5Bfilter%5D%5Bcategory%5D=&serendipity%5Bfilter%5D%5Bbody%5D=Siemens&go=Los%21&serendipity%5Bsort%5D%5Border%5D=timestamp&serendipity%5Bsort%5D%5Bordermode%5D=DESC&serendipity%5Bsort%5D%5BperPage%5D=12
Die URL findet bei mir genau einen Beitrag, in dem auch Siemens vorkommt.

Re: 2.0 RC2 - Filter funktioniert nicht

Posted: Thu Jan 01, 2015 12:48 pm
by robert
Danke für die Unterstützung. Verwende ich deine Suchstrings werden bei mir trotzdem alle Artikel aufgelistet :(

Re: 2.0 RC2 - Filter funktioniert nicht

Posted: Thu Jan 01, 2015 2:43 pm
by garvinhicking
Hi Robert!

In der include/admin/entries.inc.php findest Du folgends:

Code: Select all

        $filter_sql = implode(' AND ', $filter);

        // Fetch the entries
        $entries = serendipity_fetchEntries(
                     false,
                     false,
                     serendipity_db_limit(
                       $offSet,
                       $perPage + 1
                     ),
                     true,
                     false,
                     $orderby,
                     $filter_sql
                   );
Ändere das bitte mal in:

Code: Select all

        $filter_sql = implode(' AND ', $filter);

        // Fetch the entries
        $entries = serendipity_fetchEntries(
                     false,
                     false,
                     serendipity_db_limit(
                       $offSet,
                       $perPage + 1
                     ),
                     true,
                     false,
                     $orderby,
                     $filter_sql,
false,
false,
null,
null,
'query'
                   );

          die("Suche Einträge: " . print_r($filter_sql) . " //<br />\n " . $entries);
Dadurch wird dir die SQL-Abfrage ausgeben die durchgeführt wird (danach musst du alles wieder rückgängig machen, die Ausgabe bitte mal hierhin packen).

Ich könnte mir vorstellen dass ein Plugin die SQL-Abfrage falsch erweitert und dadurch zu viele Einträge gefunden werden und die Filterung nicht mehr klappt. Das müssten wir auf jeden Fall beheben.

Ein anderes Problem könnte sein dass die MySQL Fulltextsuche bei Dir nicht funktioniert, z.b. weil deiner serendipity_entires Datenbanktabelle der FULLTEXT-Index fehlt. Dagegen spricht aber dass die Suche im Frontend funktioniret, das dürfte also nicht das Problem sein.

LG,
Garvin

Re: 2.0 RC2 - Filter funktioniert nicht

Posted: Thu Jan 01, 2015 8:02 pm
by robert
Ausgetauscht.

Klicke ich nun auf Einträge bearbeiten erscheint nur mehr folgender Text

Code: Select all

Suche Einträge: 1 //
SELECT e.id, e.title, e.timestamp, e.comments, e.exflag, e.authorid, e.trackbacks, e.isdraft, e.allow_comments, e.last_modified, a.realname AS author, a.username AS loginname, a.email FROM serendipity_entries AS e LEFT JOIN serendipity_authors a ON e.authorid = a.authorid LEFT JOIN serendipity_entrycat ec ON e.id = ec.entryid LEFT JOIN serendipity_category c ON ec.categoryid = c.categoryid GROUP BY e.id ORDER BY timestamp DESC LIMIT 0, 13
War das so geplant?

Re: 2.0 RC2 - Filter funktioniert nicht

Posted: Thu Jan 01, 2015 8:12 pm
by robert
Zu serendipity_entries mal die Struktur aus der mySQL Datenbank

https://www.dropbox.com/s/s8ba9fs8dep8c ... 1.png?dl=0

Re: 2.0 RC2 - Filter funktioniert nicht

Posted: Fri Jan 02, 2015 9:42 am
by garvinhicking
Hi!

Du darfst jenen PHP-Code erst aktivieren wenn Du auch nach einem Filter suchst. Sorry. Mir war das automatisch klar, aber ich glaube das hätte ich erwähnen müssen :-D

D.h. Du musst in deinem Browser schon die Einträge gemacht haben, dann den Code eintragen, dann im Browser F5 drücken.

Jetzt haben wir nämlich nur die Debuggingausgaben die kommen wenn man nicht filtert.

Im Screenshot sind leider die INDEX-Keys nicht erwähnt (stehen unter der Tabelle), das wäre das relevantere...

VG,
Garvin

Re: 2.0 RC2 - Filter funktioniert nicht

Posted: Fri Jan 02, 2015 5:15 pm
by robert
Null Problemo. Jetzt ist es ja klar :)

Habe nach "Siemens" gesucht. Code ausgetauscht und dann auf Reload geklickt.

So, das kommt dabei raus

Code: Select all

Suche Einträge: 1 //
SELECT e.id, e.title, e.timestamp, e.comments, e.exflag, e.authorid, e.trackbacks, e.isdraft, e.allow_comments, e.last_modified, a.realname AS author, a.username AS loginname, a.email FROM serendipity_entries AS e LEFT JOIN serendipity_authors a ON e.authorid = a.authorid LEFT JOIN serendipity_entrycat ec ON e.id = ec.entryid LEFT JOIN serendipity_category c ON ec.categoryid = c.categoryid GROUP BY e.id ORDER BY timestamp DESC LIMIT 0, 13
Schaut aber nicht viel anders als vorher, oder?

Re: 2.0 RC2 - Filter funktioniert nicht

Posted: Fri Jan 02, 2015 5:30 pm
by robert
Und jetzt noch ein Screenshot mitsamt Indizes

https://www.dropbox.com/s/cogrsfoubty4q ... 8.png?dl=0

Re: 2.0 RC2 - Filter funktioniert nicht

Posted: Fri Jan 02, 2015 7:23 pm
by Timbalu
Wo kommen denn die ganzen extended Indizes bei dir her?

Re: 2.0 RC2 - Filter funktioniert nicht

Posted: Fri Jan 02, 2015 7:33 pm
by robert
Timbalu wrote:Wo kommen denn die ganzen extended Indizes bei dir her?
Keine Frage. Nicht absichtlich von mir erstellt ;(

Re: 2.0 RC2 - Filter funktioniert nicht

Posted: Mon Jan 05, 2015 11:24 am
by garvinhicking
Hi!

Ich denke es liegt daran dass im Code leider nur "mysql" als Datenbanktyp abgefragt wurde, und Du ggf. "mysqli" nutzt?

Ich habe gerade in den Git-Snapshot einen Bugfix hochgeladen. Zieh Dir bitte mal die aktuelle include/admin/entries.inc.php von Github und schau ob das bei Dir das Problem behebt?

Wenn nicht, kannst du bitte nochmal deinen Debugcode einbauen und diesmal verändern in:

Code: Select all

        $filter_sql = implode(' AND ', $filter);

        // Fetch the entries
        $entries = serendipity_fetchEntries(
                     false,
                     false,
                     serendipity_db_limit(
                       $offSet,
                       $perPage + 1
                     ),
                     true,
                     false,
                     $orderby,
                     $filter_sql,
false,
false,
null,
null,
'query'
                   );

echo "Suche Einträge: " . print_r($filter_sql, true) . " //<br />\n " . $entries . "<br />\n";
Mit "echo" funktoniert es auch und dann musst du den Code nicht immer ein/ausbauen.

LG,
Garvin