script is called, if it can be determined.
--data SITE_DIR
- Point to the location of your site installation. I.e. the directory
- containing your "pages/" and "index/" dir. Defaults to the
- environment variable "\$_DATA" or the working directory.
+ Point to the location of your site installation. I.e. the
+ directory containing your "pages/" and "index/" dir. Defaults to
+ the environment variable "\$_DATA" or the working directory.
--force
Add pages to index even if they seem to be indexed already.
- --loction /PAGE
+ --location /PAGE
Index only the given page and its children. The path is given
relative to the web root, i.e. without the DATA and "page/"
directory.
+ --purge
+ During pruning, remove empty database files. This will look
+ tidyer in the index/ directory, but the operation does not
+ guarantee atomicity and can disrupt index operations happening at
+ the same time. Use it carefully and maybe don't use it in
+ automatic runs via cron.
+
-v
Be more verbose.
EOF
--location) location="${2}"; shift 2;;
--verbose|-v) verb=true; shift 1;;
--force) force=true; shift 1;;
+ --purge) purge=true; shift 1;;
--help) help 0 2>&1;;
prune|index)
[ ! "$cmd" ] && cmd="$1" || help 1
. "$_EXEC/cgilite/storage.sh"
prune() {
+ local v l d date location freq num total
+
for word in "$_DATA/index"/*; do
[ "$word" = "$_DATA/index/*" ] && continue
mv -- "$word" "${word}.$$"
while read -r date location freq num total; do
- l="$_DATA/pages$(UNSTRING "$location")#index.flag"
+ l="$_DATA/pages$(UNSTRING "$location")/#index.flag"
d="$(stat -c %Y "$l")" 2>&-
if [ "$date" -ge "$d" ] 2>&-; then
fi
done <"${word}.$$" >>"${word}"
rm -- "${word}.$$"
+ if [ "${purge}" -a -f "${word}" -a ! -s "${word}" ]; then
+ rm -- "${word}"
+ [ "$verb" ] && printf '\rRemoving empty search key "%s"\n' "${word}" >&2
+ fi
done
}
index() {
+ local PATH_INFO _DATE SEARCH_INDEX location v
export PATH_INFO="" _DATE="$(date +%s)" SEARCH_INDEX=true
if [ "$location" ]; then