Esempio n. 1
0
 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;
 }