SUche + LiveSearch

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
onli
Regular
Posts: 2836
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: SUche + LiveSearch

Post by onli »

Ok. Wenn man mit dieser Indexabbildung arbeiten kann ist das von Vorteil.
Gruß
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: SUche + LiveSearch

Post by garvinhicking »

Hi!

Hättest Du vielleicht Lust+Zeit den kompletten Patch nochmal mit der neuen Methode zu machen? Und dann hier im Board am besten die komplette plugins_internal.inc.php attachen, dann kann ich das committen?

Dank&Gruß,
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: 2836
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: SUche + LiveSearch

Post by onli »

Ja, allerdings kann ich das gerade nicht testen. Unter dem Vorbehalt also, dass ich die Indexabbildung ausbaldowern kann. Aber wahrscheinlich funktioniert dein Code so.
Gruß
onli
Regular
Posts: 2836
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: SUche + LiveSearch

Post by onli »

So, klappt.

Code: Select all

diff -Nur serendipity-nightly/include/functions_entries.inc.php /var/www/include/functions_entries.inc.php 
--- serendipity-nightly/include/functions_entries.inc.php	2008-12-09 11:05:33.000000000 +0100
+++ /var/www/include/functions_entries.inc.php	2009-02-27 14:05:50.000000000 +0100
@@ -722,11 +722,13 @@
  * @access public
  * @param   string      The searchterm (may contain wildcards)
  * @param   int         Restrict the number of results [also uses $serendipity['GET']['page'] for pagination]
+ * @param   array       Add search Results at the top
  * @return  array       Returns the superarray of entries found
  */
-function &serendipity_searchEntries($term, $limit = '') {
+function &serendipity_searchEntries($term, $limit = '', $searchresults = '') {
     global $serendipity;
 
+    $orig_limit = $limit;
     if ($limit == '') {
         $limit = $serendipity['fetchLimit'];
     }
@@ -817,10 +819,35 @@
 
     $search =& serendipity_db_query($querystring);
 
-    if (is_array($search)) {
+    //Add param searchresults at the top and remove duplicates.
+    if (is_array($searchresults)) {
+        $ids_current = array();
+        foreach($searchresults AS $idx => $data) {
+            $ids_current[$data['id']] = true;
+        }
+   
+        foreach($search AS $idx => $data) {
+            if (isset($ids_current[$data['id']])) {
+                unset($search[$idx]);
+            }
+        }
+        $search = array_merge($searchresults, $search);
+    }
+
+    //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) {
+        if (! is_array($search)) {
+            return serendipity_searchEntries($term.'*', $orig_limit);
+        }else if (count($search) < 4){
+            return serendipity_searchEntries($term.'*', $orig_limit, $search);
+        }
+    }
+    
+    if (is_array($search)){
         serendipity_fetchEntryData($search);
     }
-
+    
     return $search;
 }
Datei hochladen würde ich auch machen, leider bekomme ich dann einen connection-interrupted-Fehler.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: SUche + LiveSearch

Post by garvinhicking »

Hi!

Gibt es einen speziellen GRund warum du $orig_limit benutzt?

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: 2836
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: SUche + LiveSearch

Post by onli »

Ja. limit wird im Laufe der Funktion neu belegt. Gibt man dann einfach das weiter funktioniert der zweite Durchgang nicht.
onli
Regular
Posts: 2836
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: SUche + LiveSearch

Post by onli »

Hi Garvin
Ich möchte keine Hektik verbreiten. Nur fragen, ob noch was fehlt.
Gruß
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: SUche + LiveSearch

Post by garvinhicking »

Hi!

Ah, ganz vergessen. Könntest Du den patch evtl jetzt nochmal versuchen zu attachen (hab in den foreneinstellungen auch plaintext zugelassen)? Dann kann ich das ganze leichter per wget auf meinen server ziehen, per copy+paste ist das hier remote alles etwas frickelig.

Danke,
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: 2836
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: SUche + LiveSearch

Post by onli »

Tut mir Leid. Ich bekomme da immer noch einen "connections interrupted"-Fehler. Aber das geht ja auch anders: http://www.onli-blogging.de/uploads/fun ... ntries.txt .
Gruß
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: SUche + LiveSearch

Post by garvinhicking »

Hi!

Ich hab den Code nochmal gelesen, kann es sein dass wenn man eine Suche bereits mit "*" durchführt, es keine Suchergebnisse gibt weil $search nirgendwo belegt wird? Denn beim ersten Aufruf ist $searchresults ja auch noch nich belegt, und er springt nirgendwo in einen der IF-Teile...?!

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: 2836
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: SUche + LiveSearch

Post by onli »

Vorab: Finde es gut, dass du den Code so überprüfst.

Die Variablenbenennung ist suboptimal. $search wird immer auf jeden Fall belegt, in $search wird das Ergebnis der Datenbankabfrage gespeichert: '$search =& serendipity_db_query($querystring);'

Wenn der Suchbegriff ein * enthält, wird (strpos($term, '*') === false) falsch, die Suche also nicht nochmal angeschmissen. Mehr ändert sich nicht.

$searchresult muss davon unabhängig betrachtet werden. Es ist ein Array, dessen Inhalt vorne an die Suchergebnisliste "$search" angefügt wird, Doppler in $search entfernt. Die Initialbelegung von $search ist davon unabhängig.

Also: Wenn ich nach tes* suche, findet er genau so viele Treffer, wie wenn ich nach test suche.
Gruß
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: SUche + LiveSearch

Post by garvinhicking »

Hi!

Ach mist. Ich hab den ganzen Anfang der funktion übersehen im Diff-Format. Entschuldigung für die unnötige Nachfrage, aber wie Du schon sagst - besser einmal zu oft als zu wenig gefragt :-)

Haben deinen Patch gerade eingestellt!

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/
serels
Regular
Posts: 134
Joined: Wed Jan 07, 2009 11:13 am

Re: SUche + LiveSearch

Post by serels »

garvinhicking wrote:Hi!

Ach mist. Ich hab den ganzen Anfang der funktion übersehen im Diff-Format. Entschuldigung für die unnötige Nachfrage, aber wie Du schon sagst - besser einmal zu oft als zu wenig gefragt :-)

Haben deinen Patch gerade eingestellt!

Grüße,
Garvin
... und was muss ich jetzt tun, damit ich in den Genuß der erweiterten Such - Funktionalität komme ?

lg serels
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: SUche + LiveSearch

Post by garvinhicking »

Hi!
... und was muss ich jetzt tun, damit ich in den Genuß der erweiterten Such - Funktionalität komme ?
Entweder indem Du den Patch manuell in deine Datei include/functions_entries.inc.php einspielst - wenn Dir das zu hakelig ist oder das KnowHow fehlt, musst Du entweder auf die Veröffentlichung von Serendipity 1.5 warten (das könnte jedoch noch mehrere Wochen dauern) oder Du müsstest auf den aktuellen Serendipity Snapshot von 1.5-alpha aktualisieren.

Dort hat sich auch am Loginmanagement etwas getan, daher solltest du die Snapshots eher nur einsetzen wenn Du vorher ein Backup machst. :-)

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/
serels
Regular
Posts: 134
Joined: Wed Jan 07, 2009 11:13 am

Re: SUche + LiveSearch

Post by serels »

garvinhicking wrote:Hi!
... und was muss ich jetzt tun, damit ich in den Genuß der erweiterten Such - Funktionalität komme ?
Entweder indem Du den Patch manuell in deine Datei include/functions_entries.inc.php einspielst - wenn Dir das zu hakelig ist oder das KnowHow fehlt, musst Du entweder auf die Veröffentlichung von Serendipity 1.5 warten (das könnte jedoch noch mehrere Wochen dauern) oder Du müsstest auf den aktuellen Serendipity Snapshot von 1.5-alpha aktualisieren.

Dort hat sich auch am Loginmanagement etwas getan, daher solltest du die Snapshots eher nur einsetzen wenn Du vorher ein Backup machst. :-)

Grüße,
Garvin
Hi Garvin

Mal sehen ...

Wo finde ich den Patch und an welcher Stelle der Datei paste ich den code hinein ?

lg
serels
Post Reply