public function getIndexStatistics() { $optimisationDate = KTUtil::getSystemSetting('luceneOptimisationDate', ''); $noOptimisation = false; if ($optimisationDate == '') { $optimisationDate = _kt('N/A'); $optimisationPeriod = $optimisationDate; } else { $optimisationPeriod = KTUtil::computePeriodToDate($optimisationDate, null, true); $noOptimisation = $optimisationPeriod['days'] > 2; $optimisationPeriod = $optimisationPeriod['str']; $optimisationDate = date('Y-m-d H:i:s', $optimisationDate); } $indexingDate = KTUtil::getSystemSetting('luceneIndexingDate', ''); if ($indexingDate == '') { $indexingDate = _kt('N/A'); $indexingPeriod = $indexingDate; } else { $indexingPeriod = KTUtil::computePeriodToDate($indexingDate); $indexingDate = date('Y-m-d H:i:s', $indexingDate); } $index = Indexer::get(); $docsInIndex = $index->getDocumentsInIndex(); // we are only interested in documents that are active $sql = "SELECT count(*) as docsInQueue FROM index_files i inner join documents d on i.document_id = d.id where (i.status_msg is null or i.status_msg = '') and d.status_id=1"; $docsInQueue = DBUtil::getOneResultKey($sql, 'docsInQueue'); $sql = "SELECT count(*) as errorsInQueue FROM index_files i inner join documents d on i.document_id = d.id where (i.status_msg is not null or i.status_msg <> '') and d.status_id=1"; $errorsInQueue = DBUtil::getOneResultKey($sql, 'errorsInQueue'); $sql = "SELECT count(*) as docsInRepository FROM documents where status_id=1"; $docsInRepository = DBUtil::getOneResultKey($sql, 'docsInRepository'); if ($docsInRepository == 0) { $indexingCoverage = '0.00%'; $queueCoverage = $indexingCoverage; } else { // compute indexing coverage $indexingCoverage = _kt('Not Available'); if (is_numeric($docsInIndex)) { $indexingCoverage = $docsInIndex * 100 / $docsInRepository; $indexingCoverage = number_format($indexingCoverage, 2, '.', ',') . '%'; } // compute queue coverage $queueCoverage = _kt('Not Available'); if (is_numeric($docsInQueue)) { $queueCoverage = $docsInQueue * 100 / $docsInRepository; $queueCoverage = number_format($queueCoverage, 2, '.', ',') . '%'; } } $stats = array('optimisationDate' => $optimisationDate, 'optimisationPeriod' => $optimisationPeriod, 'indexingDate' => $indexingDate, 'indexingPeriod' => $indexingPeriod, 'docsInIndex' => $docsInIndex, 'docsInQueue' => $docsInQueue, 'errorsInQueue' => $errorsInQueue, 'docsInRepository' => $docsInRepository, 'indexingCoverage' => $indexingCoverage, 'queueCoverage' => $queueCoverage, 'noOptimisation' => $noOptimisation); return $stats; }