Artikel mit ähnlichen Themen doch nicht ähnlich

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
Joaquin
Regular
Posts: 99
Joined: Sun Dec 31, 2006 2:01 am
Contact:

Artikel mit ähnlichen Themen doch nicht ähnlich

Post by Joaquin »

Bei der Tag-Funktion, ähnliche Themen anzuzeigen, bekomme ich bei meinen Artikeln hauptsächlich die Artikel neueren Datums angezeigt und nicht jene, die thematisch zu den Tags des Artikels gehören würden.

Was läuft da falsch?
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Artikel mit ähnlichen Themen doch nicht ähnlich

Post by garvinhicking »

Hi!

Beispiele? Nenn uns mal einen Artikel, und welche Artikel du bei diesem als "ähnliche themen" erwarten würdest?

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/
Joaquin
Regular
Posts: 99
Joined: Sun Dec 31, 2006 2:01 am
Contact:

Post by Joaquin »

Nehmen wir z.B. den folgenden Artikel:
http://weblogger.joaquinenriquez.com/ar ... -Dick.html

Dieser hat z.B. die Tags "diät" und "soziales".

Nun werden dort nur verwandte Artikel angezeigt, welche den Tag "soziales" haben, aber nicht ein einziger mit dem Tag "diät" und dies obwohl es noch andere Artikel gibt, welche ebenfalls beide Tags verwenden.

Sinnvoll wäre es doch, hier zuerst Artikel vorzuschlagen, welche die größtmögliche Tagverwandschaft haben.

Auch eine Streuung der Tags und nicht die Fixierung auf nun einen Tag, würde evtl. hier bessere Ergebnisse liefern.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

In der serendipity_event_freetag.php ist in ungefähr zeile 380 folgendes:

Code: Select all

        $q = "SELECT DISTINCT e1.entryid,
                     e2.title,
                     e2.timestamp
                FROM {$serendipity['dbPrefix']}entrytags AS e1
           LEFT JOIN {$serendipity['dbPrefix']}entries   AS e2
                  ON e1.entryid = e2.id
               WHERE e1.tag IN ('" . implode("', '", $tags) . "')
                 AND e1.entryid != " . (int)$postID . "
                 AND e2.isdraft = 'false'
                     " . (!serendipity_db_bool($serendipity['showFutureEntries']) ? " AND e2.timestamp <= " . time() : '') . "
            ORDER BY  e2.timestamp DESC
               LIMIT " . $this->get_config('show_related_count', 10);
Das ist, was für die Abfrage verändert werden muss. Probiere mal bitte folgendes:
$q = "SELECT DISTINCT e1.entryid,
e2.title,
e2.timestamp,
count(e2.id) AS relativity
FROM {$serendipity['dbPrefix']}entrytags AS e1
LEFT JOIN {$serendipity['dbPrefix']}entries AS e2
ON e1.entryid = e2.id
WHERE e1.tag IN ('" . implode("', '", $tags) . "')
AND e1.entryid != " . (int)$postID . "
AND e2.isdraft = 'false'
" . (!serendipity_db_bool($serendipity['showFutureEntries']) ? " AND e2.timestamp <= " . time() : '') . "
GROUP BY e2.id
ORDER BY relativity, e2.timestamp DESC
LIMIT " . $this->get_config('show_related_count', 10);
I try to group this query by the entryid, so that the more often the same entry is found, the higher a counter variable ("relativity") gets. If results are sorted by this criteria, it should yield those entries first that share the highest tag-count...in theory. :)

Regards
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/
blog.brockha.us
Regular
Posts: 695
Joined: Tue Jul 03, 2007 3:34 am
Location: Berlin, Germany
Contact:

Post by blog.brockha.us »

Das gleiche ist mir auch schon mehrmals aufgefallen. Es sollten erst die Artikel kommen, die alle Tags haben, dann die, die fast alle haben usw. Erst dieses Ergebnis sollte dann nach Datum sortiert werden.
Wollte ich immer schon mal als Option einbauen, bisher leider nie zu gekommen..
- Grischa Brockhaus - http://blog.brockha.us
- Want to make me happy? http://wishes.brockha.us/
Joaquin
Regular
Posts: 99
Joined: Sun Dec 31, 2006 2:01 am
Contact:

Post by Joaquin »

Den Code habe ich eingebaut und funktioniert auch so etwas besser als es vorher ging.
Die Lösung von Brockhaus wäre natürlich optimal. Schon eine Ahnung, wann Du es realisieren könntest?
blog.brockha.us
Regular
Posts: 695
Joined: Tue Jul 03, 2007 3:34 am
Location: Berlin, Germany
Contact:

Post by blog.brockha.us »

Leider gerade keine Ahnung, weil ich schon wieder ziemlich im Projektstress bin.
- Grischa Brockhaus - http://blog.brockha.us
- Want to make me happy? http://wishes.brockha.us/
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi Grischa!

HAst Du mein SQL mal ausprobierT? Was daran klappt noch nicht?

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/
Post Reply