Assign better priorities to docs pages for searching, and include older docs

Instead of just including supported versions, include older versions of
the docs as well, and properly assign priorities by:

* For current docs, always assign priority 1.0
* For any other docs, start at 0.8 for the latest and decrease priority
  by 0.1 for each version, until we reach 0.1.

This should restore the ability to search for old versions of the
documentation (they still get proper priorities when searching for
suburls, which currently returns no hits at all) while maintaining
a strong priority for the newer versions.
This commit is contained in:
Magnus Hagander
2012-02-07 12:12:05 +01:00
parent 1cf436ac4f
commit 17ffc371b9

View File

@ -9,12 +9,28 @@ def get_struct():
# Can't use a model here, because we don't (for some reason) have a
# hard link to the versions table here
curs = connection.cursor()
curs.execute("SELECT d.version, d.file, v.docsloaded FROM docs d INNER JOIN core_version v ON v.tree=d.version WHERE v.supported")
curs.execute("SELECT d.version, d.file, v.docsloaded FROM docs d INNER JOIN core_version v ON v.tree=d.version WHERE d.version > 0 ORDER BY d.version DESC")
# Start priority is higher than average but lower than what we assign
# to the current version of the docs.
docprio = 0.8
lastversion = None
for version, filename, loaded in curs.fetchall():
# Decrease the priority with 0.1 for every version of the docs
# we move back in time, until we reach 0.1. At 0.1 it's unlikely
# to show up in a general search, but still possible to reach
# through version specific searching for example.
if lastversion != version:
if docprio > 0.2:
docprio -= 0.1
lastversion = version
yield ('docs/%s/static/%s' % (version, filename),
None, loaded)
#FIXME ^ do something smart with priorities on older
#versions
docprio, loaded)
# Also yield the current version urls, with the highest
# possible priority
if version == currentversion.tree:
yield ('docs/current/static/%s' % filename,
1.0, loaded)