Page 3 of 3

Re: SUche + LiveSearch

Posted: Mon Mar 09, 2009 12:58 pm
by garvinhicking
Hi!

onli hat hier in dem Thread den Code gepostet, das ist im Diff-Format. DIFF zeigen jeweilseine Zeilennummer an, und wo man etwas rausnehmen muss (zeilen mit "-") und wo man was reintun muss (Zeilen mit "+").

Grüße,
Garvin

Re: SUche + LiveSearch

Posted: Mon Mar 09, 2009 10:46 pm
by onli
Alternativ könntest du deine include/functions_entries.inc.php mit dieser Datei ersetzen. Mach aber vorher ein Backup der Datei :)
Gruß

Re: SUche + LiveSearch

Posted: Wed Mar 11, 2009 1:51 pm
by serels
onli wrote:Alternativ könntest du deine include/functions_entries.inc.php mit dieser Datei ersetzen. Mach aber vorher ein Backup der Datei :)
Gruß
Danke, habe ich gemacht :-)

Vielen Dank für die Mühe ....

lg serels

Re: SUche + LiveSearch

Posted: Sun Sep 26, 2010 1:29 pm
by Timbalu
Hi Garvin

Ich hätte eine Erweiterung des Patches von onli.

Gegeben ist ein Suchbegriff mit 8 Ergebnissen (ohne LiveSearch), PageLimit auf 5, pb Pagination.

Daraufhin wurde auf /search/suchbegriff/p1.html alles korrekt angezeigt, auf Seite 2 durch die geringe Zahl von 8 - 5 = 3 aber ebenfalls der (*)Patch. Das bringt bei mir alles durcheinander. Weder die Ergebniszählung oder die Ergebnisse stimmen, noch wird die Rück-Pagination angezeigt.

Beschränkt man die Anwendung des (*)Patches aber mit

Code: Select all

 && intval($serendipity['GET']['page']) == 1
auf Seite 1, geht alles ohne Probleme.

Code: Select all

    //if * wasn't already appended and if there are none or not enough
    //results, search again for entries containing the searchterm as a part  
    if (strpos($term, '*') === false && intval($serendipity['GET']['page']) == 1) {
        if (! is_array($search)) {
            return serendipity_searchEntries($term.'*', $orig_limit);
        }else if (count($search) < 4){
            return serendipity_searchEntries($term.'*', $orig_limit, $search);
        }
    }
Dies habe ich bereits mit onli abgesprochen, so dass du das übernehmen kannst, wenn nichts dagegen spricht.

Grüße
Ian

Re: SUche + LiveSearch

Posted: Mon Sep 27, 2010 10:34 am
by garvinhicking
Hi!

OK! Habe ich leicht modifiziert committed.

Grüße,
Garvin

Re: SUche + LiveSearch

Posted: Mon Jun 18, 2012 2:58 pm
by garvinhicking
Hi!

Wie YellowLED in einem Thread anmerkt macht die hartkodierte "4" ein Problem. Mein Vorschlag wäre stattdessen $serendipity['fetchLimit']-1 (Anzahl der Artikel pro Seite) wenn dies kleiner ist als 4:

Code: Select all

    //if * wasn't already appended and if there are none or not enough
    //results, search again for entries containing the searchterm as a part  
    if (strpos($term, '*') === false && intval($serendipity['GET']['page']) == 1) {
        if (!is_array($search)) {
            return serendipity_searchEntries($term.'*', $orig_limit);
        } else {
            $ec = count($search);
            $checkcount = 4;
            if ($serendipity['fetchLimit'] < $checkcount) {
                $checkcount = $serendipity['fetchLimit'];
            }
            if ($ec < $checkcount) {
                return serendipity_searchEntries($term.'*', $orig_limit, $search);
            }
        }
    }

Re: SUche + LiveSearch

Posted: Wed Jun 20, 2012 9:14 am
by Timbalu
Ja, wenn das besser ist, bitte commiten.
Ich kann im Moment nicht nochmal dieselben Tests anstellen wie damals. Wichtig war auf alle Fälle die Berechnungen für (*) in bestimmten Fällen für die Folgeseiten zu stoppen. Wo genau soll die -1 hin?

Re: SUche + LiveSearch

Posted: Wed Jun 20, 2012 9:31 am
by Timbalu

Code: Select all

    //if * wasn't already appended and if there are none or not enough
    //results, search again for entries containing the searchterm as a part 
    if ($p == 1 && strpos($term, '*') === false && $serendipity['dbType'] != 'sqlite' && $serendipity['dbType'] != 'sqlite3' && $serendipity['dbType'] != 'pdo-sqlite') {
        if (!is_array($search)) {
            return serendipity_searchEntries($term.'*', $orig_limit);
        } else {
            $ec = count($search);
            $checkcount = 4;
            if ($serendipity['fetchLimit'] < $checkcount) {
                $checkcount = $serendipity['fetchLimit'];
            }
            if ($ec < $checkcount) {
                return serendipity_searchEntries($term.'*', $orig_limit, $search);
            }
        }
    }
läuft bei mir ohne probleme, zb mit "nam*", aber ohne test auf pageLimit 1.