„Verwirrte“ Suchfunktion?

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
yellowled
Regular
Posts: 7111
Joined: Fri Jan 13, 2006 11:46 am
Location: Eutin, Germany
Contact:

„Verwirrte“ Suchfunktion?

Post by yellowled »

Mein Blog hat

* 4 Artikel in der Kategorie „Serendipity“
* 8 mit dem Tag „s9y“ versehene Artikel (von denen aber in vieren der Begriff „Serendipity“ nicht vorkommt, die übrigen 4 entsprechen denen aus der gleichnamigen Kategorie)

Verwende ich „Serendipity“ im Suchformular, erhalte ich:

* „Die Suche nach "Serendipity" ergab 15 Treffer:“
* 2 Artikel, von denen einer weder das Wort enthält noch der Kategorie zugewiesen ist
* Verweise auf 2 statische Seiten (beide enthalten den Suchbegriff)

Äh.

Außerdem auf der Ergebnisseite drollig: Trotz angeblich 15 Treffern (es müssten wohl 4 Artikel + 2 Seiten, also 6 sein) bekomme ich keine Pagination auf der Ergebnisseite, stattdessen werden beide o.g. Artikel ausgegeben, obwohl ich ausdrücklich im Blog (nicht im Template) vorgegeben habe, dass 1 Artikel pro Seite angezeigt werden soll.

Zugegeben, mein ins Archiv ausgelagertes Suchformular ist etwas exotisch, aber das …?

YL
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: „Verwirrte“ Suchfunktion?

Post by Timbalu »

Tja, echt verwirrend! :)

Einer von den 4 Artikeln, die in der Kategorie: 'Serendipity' sind, enthält dieses Wort nicht, ein weiterer nur ein Mal, soweit ich auf die Schnelle sehen kann. Deswegen werden wahrscheinlich nur 2 Artikel weitergereicht. (Ob die "15" Summe dem gerecht wird? 3 Artikel mit "Serendipity", beide bodies, Links, Comment und Footer ist magischerweise genau 15, ohne Gewähr. ;-) Warum das so ist, obwohl search auf MATCH(title,body,extended) beschränkt ist..., ???. Ist wahrscheinlich nur Zufall.)

Denn es gibt ja diese berühmte search Beschränkung: siehe u.a. Garvin Antwort. http://board.s9y.org/viewtopic.php?f=10 ... #p10428387

Warum die Pagination davon unberührt bleibt, kann ich gerade nicht sagen. Vielleicht gibt es da ja auch so eine Einschränkung, oder limit wird bei einer 1 Artikel Pagination auseinandergehauen, weil auf ['GET']['page']-1 basiert.

Schalt doch mal $log_queries = true, in der functions_entries.inc:
function &serendipity_searchEntries($term, $limit = '', $searchresults = '') {
...
static $log_queries = false;
...
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
yellowled
Regular
Posts: 7111
Joined: Fri Jan 13, 2006 11:46 am
Location: Eutin, Germany
Contact:

Re: „Verwirrte“ Suchfunktion?

Post by yellowled »

Timbalu wrote:Schalt doch mal $log_queries = true, in der functions_entries.inc:
Und dann loggt das was wohin? Die Suchverwirrung ist mir ja fast wurscht, aber die Pagination bzw. Nicht-Pagination nervt mich schon.

Interessant aber: Bei anderen Suchbegriffen funktioniert es erwartungsgemäß, sogar mit Pagination. Nimmt man z.B. „Grunt“ oder „2k11“ als Suchbegriff, klappt es. „Webdesign“ funktioniert auch, es kann also nicht daran liegen, dass es eine dem Suchbegriff entsprechende Kategorie gibt. Auch eine Irritation durch gleichzeitige Suchergebnisse auf statischen Seiten kann ausgeschlossen werden, die Suche nach z.B. „Webkrauts“ klappt ebenfalls.

Das ist, äh, irgendwie strange.

YL
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: „Verwirrte“ Suchfunktion?

Post by Timbalu »

yellowled wrote:Und dann loggt das was wohin?
Die Suchquery, nehme ich an. Wohin steht kurz unterhalb von static $log_queries = false; Aber wie ich gerade sehe, heißt das zwar log_queries, schreibt aber nur u.a. den searchterm, hilft also wahrscheinlich nichts.

Ist das pagination Problem weg, wenn du auf 2 stellst?
"2k11" gibts ja auch wirklich mehrfach in den entries.
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
yellowled
Regular
Posts: 7111
Joined: Fri Jan 13, 2006 11:46 am
Location: Eutin, Germany
Contact:

Re: „Verwirrte“ Suchfunktion?

Post by yellowled »

Timbalu wrote:Ist das pagination Problem weg, wenn du auf 2 stellst?
Ja. Ergebnis:

* Die Suche nach "Serendipity" ergab 15 Treffer:
* Es werden nun 4 statt 2 Artikel ausgegeben.
* In 2 der ausgegebenen Artikel kommt der Begriff „Serendipity“ nicht vor.
* Keine Pagination.

YL
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: „Verwirrte“ Suchfunktion?

Post by Timbalu »

Noch lustiger wirds mit "S9y*". 8 Anzeigen, eine davon doppelt (Bower - ist die ev. in mehreren Kategorien?), 3 oder 4 ohne Vorkommen..., aber Pagination klappt. Davon haben mind. 3 mehrere Vorkommen.

War da nicht was mit mind. 3 Eintragsvorkommen mit jeweils mehreren Vorkommen innerhalb des match?

Was ist wenn du mal mit PhpMyAdmin direkt suchst?
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: „Verwirrte“ Suchfunktion?

Post by Timbalu »

Die wirklich ziemlich komplizierte Query (bei mir mit $serendipity['fetchLimit'] = 6) lautet:

Code: Select all

SELECT ep_sticky.value AS orderkey, ep_cache_extended.value AS ep_cache_extended, ep_cache_body.value AS ep_cache_body, e.id, e.authorid, a.realname AS author, e.allow_comments, e.moderate_comments, a.email, e.timestamp, e.comments, e.title, e.body, e.extended, e.trackbacks, e.exflag, e.isdraft, e.last_modified, a.username AS loginname FROM
                            s9y_entries e
                 LEFT JOIN  s9y_authors a
                        ON  e.authorid = a.authorid
                 LEFT JOIN  s9y_entrycat ec
                        ON  e.id = ec.entryid
                             LEFT OUTER JOIN s9y_entryproperties ep_cache_extended
                                                  ON (e.id = ep_cache_extended.entryid AND ep_cache_extended.property = 'ep_cache_extended')
 LEFT OUTER JOIN s9y_entryproperties ep_cache_body
                                                  ON (e.id = ep_cache_body.entryid AND ep_cache_body.property = 'ep_cache_body')
 LEFT OUTER JOIN s9y_entryproperties ep_access
                                              ON (e.id = ep_access.entryid AND ep_access.property = 'ep_access')
 LEFT JOIN s9y_entryproperties ep_sticky
                                            ON (e.id = ep_sticky.entryid AND ep_sticky.property = 'ep_is_sticky') LEFT JOIN s9y_category c
                                       ON ec.categoryid = c.categoryid LEFT JOIN s9y_authorgroups AS acl_a
                                   ON acl_a.authorid = 1
                            LEFT JOIN s9y_access AS acl_acc
                                   ON (    acl_acc.artifact_mode = 'read'
                                       AND acl_acc.artifact_type = 'category'
                                       AND acl_acc.artifact_id   = c.categoryid
                                      )
                     WHERE
                            (MATCH(title,body,extended) AGAINST('Serendipity'))
                             AND isdraft = 'false'  AND timestamp <= 1377958200 AND  (ep_access.property IS NULL OR ep_access.value = 'member' OR ep_access.value = 'public' OR (ep_access.value = 'private' AND e.authorid = 1))   AND     (
                                 c.categoryid IS NULL
                                 OR ( acl_acc.groupid = acl_a.groupid OR acl_acc.groupid = 0)
                                 OR ( acl_acc.artifact_id IS NULL
                                      
                                    )
                               ) GROUP BY e.id ORDER BY timestamp DESC LIMIT 6 lang=en
und läuft bei mir lokal im PhpMyAdmin nur, ohne das letzte " lang=en".

Sehr vereinfacht gestaltet also so:

Code: Select all

SELECT * FROM `s9y_entries`
WHERE (CONVERT( `title` USING utf8 ) LIKE '%Serendipity%'
OR CONVERT( `body` USING utf8 ) LIKE '%Serendipity%'
OR CONVERT( `extended` USING utf8 ) LIKE '%Serendipity%'
) AND ( `authorid` =1 OR `authorid` =0 )
AND `isdraft` = 'false'
AND timestamp <=1377958200
ORDER BY timestamp DESC
LIMIT 0 , 30
Ergibt bei gleichem LIMIT gleiche Anzahl.

Die Einträge ohne Vorkommen offenbaren sich schon mal im Nachhinein als solche wenigstens mit images. Und die haben "serendipity" als Vorkommen im body (<a class="serendipity_image_link" ...)! :wink:
Das liegt natürlich an diesem besonderen Suchwort!
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
yellowled
Regular
Posts: 7111
Joined: Fri Jan 13, 2006 11:46 am
Location: Eutin, Germany
Contact:

Re: „Verwirrte“ Suchfunktion?

Post by yellowled »

Timbalu wrote:Noch lustiger wirds mit "S9y*". 8 Anzeigen, eine davon doppelt (Bower - ist die ev. in mehreren Kategorien?)
Nein, ich benutze keine multiplen Kategorien.

YL
yellowled
Regular
Posts: 7111
Joined: Fri Jan 13, 2006 11:46 am
Location: Eutin, Germany
Contact:

Re: „Verwirrte“ Suchfunktion?

Post by yellowled »

Timbalu wrote:Die Einträge ohne Vorkommen offenbaren sich schon mal im Nachhinein als solche wenigstens mit images. Und die haben "serendipity" als Vorkommen im body (<a class="serendipity_image_link" ...)! :wink:
Das ist allerdings Murks, aber vermutlich genau der springende Punkt. Das dürfte dann ja in anderen Themes (ich verwende kaum „übliche“ s9y-Klassen im Markup) noch „schlimmer“ ausfallen.

Aber warum steigt die Pagination dabei aus?

YL
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: „Verwirrte“ Suchfunktion?

Post by Timbalu »

yellowled wrote:Aber warum steigt die Pagination dabei aus?
Ich nehme stark an wegen $serendipity['fetchLimit'] = 1 und dem ['GET']['page']-1. Das könnte ein nicht ausreichend daraufhin feingetunter "Bug" sein.

Obwohl.., bei mir funktioniert es!
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: „Verwirrte“ Suchfunktion?

Post by Timbalu »

Warum das bei mir funktionierte und bei dir nicht, hat mir ja keine Ruhe gelassen. Und wie es scheint ist es sehr gut, das ich meinen dev blog (zu Testzwecken) immer noch mit der alten "gespickten" 1.6 Series fahre. Das geht im Grunde zurück auf einen 4 Jahre alten Patch.

Ersetze mal in https://github.com/s9y/Serendipity/blob ... c.php#L890

Code: Select all

        } else if (count($search) < 4){
            return serendipity_searchEntries($term.'*', $orig_limit, $search);
        }
mit der neuen Version

Code: Select all

        } else {
            $ec = count($search);
            $checkcount = 4;
            if ($serendipity['fetchLimit'] < $checkcount) {
                $checkcount = $serendipity['fetchLimit'];
            }
            if ($ec < $checkcount) {
                return serendipity_searchEntries($term.'*', $orig_limit, $search);
            }
        }
Wenn man den unten gelinkten Thread genau liest (eigentlich nur die letzten 3 posts), sieht man auch woher das kommt. Das ist eine wunderbare Verbesserung, im Übrigen durch dich selbst angeregt ;-), die irgendwie bisher nicht ihren Weg in die commits gefunden hat. Ich hatte damit lokal herumgetestet und sie dann erfreulicherweise einfach gelassen. :) http://board.s9y.org/viewtopic.php?f=10&t=14810

Check das mal durch bevor wir das committen.
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
yellowled
Regular
Posts: 7111
Joined: Fri Jan 13, 2006 11:46 am
Location: Eutin, Germany
Contact:

Re: „Verwirrte“ Suchfunktion?

Post by yellowled »

Timbalu wrote:Das ist eine wunderbare Verbesserung, im Übrigen durch dich selbst angeregt ;-), die irgendwie bisher nicht ihren Weg in die commits gefunden hat.
Ich sehe dort zwar nicht, was ich damit zu tun habe, aber der Patch scheint zu funktionieren. Damit ergibt der Suchbegriff „Serendipity“:

* Die Suche nach "Serendipity" ergab 6 Treffer:
* Pagination funktioniert, ein Eintrag pro Seite

Superobergenau ausgetestet habe ich es natürlich jetzt auf die Schnelle nicht, aber das scheint mir “good to be committed”. Danke für's buddeln!

YL
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: „Verwirrte“ Suchfunktion?

Post by Timbalu »

Du hattest wohl schon einmal irgendwie die hartkodierte 4 als nicht zutreffend beschrieben...

Committed!
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: „Verwirrte“ Suchfunktion?

Post by Timbalu »

Die Frage wäre ja, wie man elegant <* class="serendipity_*" *> und <!-- s9ymdb:* --> aus der Query mit

Code: Select all

 if (strtolower($term) == 'serendipity' || strtolower($term) == 's9y*') 
    { ...aber nicht in Form von (s.o.)... }
ausklammern könnte. Hat da jemand eine Idee?
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
yellowled
Regular
Posts: 7111
Joined: Fri Jan 13, 2006 11:46 am
Location: Eutin, Germany
Contact:

Re: „Verwirrte“ Suchfunktion?

Post by yellowled »

Timbalu wrote:Hat da jemand eine Idee?
Völlige Laienmeinung, aber das Einfachste wäre, wenn die Anfrage Markup komplett ignorieren und nur den Plain Text durchsuchen würde, aber das wird wohl kaum möglich sein, wenn man HTML in Einträgen schreibt oder einen WYSIWYG-Editor verwendet. (Nein, das ist kein Argument pro NL2BR! :wink:)

YL
Post Reply