[Erledigt] 2.0 RC2 - Filter funktioniert nicht

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
robert
Regular
Posts: 1062
Joined: Mon May 09, 2005 9:17 pm
Location: Vienna, Austria
Contact:

[Erledigt] 2.0 RC2 - Filter funktioniert nicht

Post 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
bernd_d
Regular
Posts: 468
Joined: Thu Jun 03, 2010 9:28 am
Contact:

Re: 2.0 RC2 - Filter funktioniert nicht

Post 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.
robert
Regular
Posts: 1062
Joined: Mon May 09, 2005 9:17 pm
Location: Vienna, Austria
Contact:

Re: 2.0 RC2 - Filter funktioniert nicht

Post 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
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: 2.0 RC2 - Filter funktioniert nicht

Post 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.
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
bernd_d
Regular
Posts: 468
Joined: Thu Jun 03, 2010 9:28 am
Contact:

Re: 2.0 RC2 - Filter funktioniert nicht

Post 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.
robert
Regular
Posts: 1062
Joined: Mon May 09, 2005 9:17 pm
Location: Vienna, Austria
Contact:

Re: 2.0 RC2 - Filter funktioniert nicht

Post by robert »

Danke für die Unterstützung. Verwende ich deine Suchstrings werden bei mir trotzdem alle Artikel aufgelistet :(
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: 2.0 RC2 - Filter funktioniert nicht

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
robert
Regular
Posts: 1062
Joined: Mon May 09, 2005 9:17 pm
Location: Vienna, Austria
Contact:

Re: 2.0 RC2 - Filter funktioniert nicht

Post 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?
robert
Regular
Posts: 1062
Joined: Mon May 09, 2005 9:17 pm
Location: Vienna, Austria
Contact:

Re: 2.0 RC2 - Filter funktioniert nicht

Post by robert »

Zu serendipity_entries mal die Struktur aus der mySQL Datenbank

https://www.dropbox.com/s/s8ba9fs8dep8c ... 1.png?dl=0
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: 2.0 RC2 - Filter funktioniert nicht

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
robert
Regular
Posts: 1062
Joined: Mon May 09, 2005 9:17 pm
Location: Vienna, Austria
Contact:

Re: 2.0 RC2 - Filter funktioniert nicht

Post 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?
robert
Regular
Posts: 1062
Joined: Mon May 09, 2005 9:17 pm
Location: Vienna, Austria
Contact:

Re: 2.0 RC2 - Filter funktioniert nicht

Post by robert »

Und jetzt noch ein Screenshot mitsamt Indizes

https://www.dropbox.com/s/cogrsfoubty4q ... 8.png?dl=0
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: 2.0 RC2 - Filter funktioniert nicht

Post by Timbalu »

Wo kommen denn die ganzen extended Indizes bei dir her?
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
robert
Regular
Posts: 1062
Joined: Mon May 09, 2005 9:17 pm
Location: Vienna, Austria
Contact:

Re: 2.0 RC2 - Filter funktioniert nicht

Post by robert »

Timbalu wrote:Wo kommen denn die ganzen extended Indizes bei dir her?
Keine Frage. Nicht absichtlich von mir erstellt ;(
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: 2.0 RC2 - Filter funktioniert nicht

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Post Reply