From a23ac4d7df6b3952d2d1b76686d3b439fc0a6759 Mon Sep 17 00:00:00 2001 From: Michael Hamann Date: Thu, 15 Mar 2012 14:21:42 +0100 Subject: Indexer: Check for deleted pages first FS#2469 This move the check if the page doesn't exist anymore but is still in the index before the check if the index needs to be updated as otherwise deleted pages won't be deleted from the index. --- inc/indexer.php | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'inc/indexer.php') diff --git a/inc/indexer.php b/inc/indexer.php index 9d8d6f99b..3f56e5fe5 100644 --- a/inc/indexer.php +++ b/inc/indexer.php @@ -1174,18 +1174,8 @@ function & idx_get_stopwords() { * @author Tom N Harris */ function idx_addPage($page, $verbose=false, $force=false) { - // check if indexing needed $idxtag = metaFN($page,'.indexed'); - if(!$force && @file_exists($idxtag)){ - if(trim(io_readFile($idxtag)) == idx_get_version()){ - $last = @filemtime($idxtag); - if($last > @filemtime(wikiFN($page))){ - if ($verbose) print("Indexer: index for $page up to date".DOKU_LF); - return false; - } - } - } - + // check if page was deleted but is still in the index if (!page_exists($page)) { if (!@file_exists($idxtag)) { if ($verbose) print("Indexer: $page does not exist, ignoring".DOKU_LF); @@ -1200,6 +1190,18 @@ function idx_addPage($page, $verbose=false, $force=false) { @unlink($idxtag); return $result; } + + // check if indexing needed + if(!$force && @file_exists($idxtag)){ + if(trim(io_readFile($idxtag)) == idx_get_version()){ + $last = @filemtime($idxtag); + if($last > @filemtime(wikiFN($page))){ + if ($verbose) print("Indexer: index for $page up to date".DOKU_LF); + return false; + } + } + } + $indexenabled = p_get_metadata($page, 'internal index', METADATA_RENDER_UNLIMITED); if ($indexenabled === false) { $result = false; -- cgit v1.2.3 From c55c59e3d67b1481e86b41e4b49083c99d3659c5 Mon Sep 17 00:00:00 2001 From: Michael Hamann Date: Thu, 15 Mar 2012 14:56:48 +0100 Subject: Fix page deletion in the indexer This fixes page deletion in the indexer and fixes a but where empty lines were added to the _i.idx file of metadata for which no value was set (harmless, and wasn't executed anyway). --- inc/indexer.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'inc/indexer.php') diff --git a/inc/indexer.php b/inc/indexer.php index 3f56e5fe5..6766bec25 100644 --- a/inc/indexer.php +++ b/inc/indexer.php @@ -351,7 +351,7 @@ class Doku_Indexer { return "locked"; // load known documents - $pid = $this->getIndexKey('page', '', $page); + $pid = $this->addIndexKey('page', '', $page); if ($pid === false) { $this->unlock(); return false; @@ -389,6 +389,7 @@ class Doku_Indexer { $val_idx = explode(':', $this->getIndexKey($metaname.'_p', '', $pid)); $meta_idx = $this->getIndex($metaname.'_i', ''); foreach ($val_idx as $id) { + if ($id === '') continue; $meta_idx[$id] = $this->updateTuple($meta_idx[$id], $pid, 0); } $this->saveIndex($metaname.'_i', '', $meta_idx); -- cgit v1.2.3 From 63703ba5bd81f50c43bc45f8bf79c514afa3ee49 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 16 Mar 2012 12:09:30 +0100 Subject: coding style updates --- inc/indexer.php | 1 - 1 file changed, 1 deletion(-) (limited to 'inc/indexer.php') diff --git a/inc/indexer.php b/inc/indexer.php index 6766bec25..80d2651c2 100644 --- a/inc/indexer.php +++ b/inc/indexer.php @@ -291,7 +291,6 @@ class Doku_Indexer { $val_idx = array(); } - foreach ($values as $val) { $val = (string)$val; if ($val !== "") { -- cgit v1.2.3