SUche + LiveSearch

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: SUche + LiveSearch

Post 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
# 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/
onli
Regular
Posts: 3044
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: SUche + LiveSearch

Post by onli »

Alternativ könntest du deine include/functions_entries.inc.php mit dieser Datei ersetzen. Mach aber vorher ein Backup der Datei :)
Gruß
serels
Regular
Posts: 134
Joined: Wed Jan 07, 2009 11:13 am

Re: SUche + LiveSearch

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

Re: SUche + LiveSearch

Post 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
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: SUche + LiveSearch

Post by garvinhicking »

Hi!

OK! Habe ich leicht modifiziert committed.

Grüße,
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/
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: SUche + LiveSearch

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

Re: SUche + LiveSearch

Post 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?
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: SUche + LiveSearch

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

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
Post Reply