Exemple #1
0
 /**
  * Perform a search and return record collection.
  *
  * @param AbstractQuery $query  Search query
  * @param integer       $offset Search offset
  * @param integer       $limit  Search limit
  * @param ParamBag      $params Search backend parameters
  *
  * @return RecordCollectionInterface
  */
 public function search(AbstractQuery $query, $offset, $limit, ParamBag $params = null)
 {
     //it was necessary to overwrite this function
     // before Refactoring of Spellchecking
     //I will leave it because it might be possible
     // that we need our own backend later
     return parent::search($query, $offset, $limit, $params);
 }
Exemple #2
0
 /**
  * Returns browser usage statistics
  *
  * @param bool $version    Include the version numbers in the list
  * @param int  $listLength How many items to return
  *
  * @return array
  */
 public function getBrowserStats($version, $listLength = 5)
 {
     $query = new Query('*:*');
     $params = new ParamBag();
     $params->add('fl', 'browser,browserVersion');
     $params->add('group', 'true');
     $params->add('group.field', 'session');
     $start = 0;
     $limit = 1000;
     $hashes = [];
     do {
         $response = $this->solrBackend->search($query, $start, $limit, $params);
         $groups = $response->getGroups();
         foreach ($groups['session']['groups'] as $group) {
             if ($version) {
                 // Version specific
                 $browser = $group['doclist']['docs'][0]['browser'] . ' ' . $group['doclist']['docs'][0]['browserVersion'];
                 if (isset($hashes[$browser])) {
                     $hashes[$browser]++;
                 } elseif (count($hashes) < $limit) {
                     $hashes[$browser] = 1;
                 }
             } else {
                 // Browser name
                 if (isset($hashes[$group['doclist']['docs'][0]['browser']])) {
                     $hashes[$group['doclist']['docs'][0]['browser']]++;
                 } elseif (count($hashes) < $limit) {
                     $hashes[$group['doclist']['docs'][0]['browser']] = 1;
                 }
             }
         }
         $start += $limit;
     } while (count($groups['session']['groups']) > 0);
     $solrBrowsers = [];
     foreach ($hashes as $browser => $count) {
         $newBrowser = ['browserName' => $browser, 'count' => $count];
         // Insert sort (limit to listLength)
         for ($i = 0; $i < $listLength - 1 && $i < count($solrBrowsers); $i++) {
             if ($count > $solrBrowsers[$i]['count']) {
                 // Insert in order
                 array_splice($solrBrowsers, $i, 0, [$newBrowser]);
                 continue 2;
                 // Skip the append after this loop
             }
         }
         if (count($solrBrowsers) < $listLength) {
             $solrBrowsers[] = $newBrowser;
         }
     }
     return $solrBrowsers;
 }
 /**
  * Create the SOLR backend.
  *
  * @param Connector $connector Connector
  *
  * @return Backend
  */
 protected function createBackend(Connector $connector)
 {
     $backend = new Backend($connector);
     $backend->setQueryBuilder($this->createQueryBuilder());
     if ($this->logger) {
         $backend->setLogger($this->logger);
     }
     return $backend;
 }
 /**
  * Create the SOLR backend.
  *
  * @param Connector $connector Connector
  *
  * @return Backend
  */
 protected function createBackend(Connector $connector)
 {
     //we can't use zje original funtion because Backend is overwritten
     // by Swissbib
     $backend = new Backend($connector);
     $backend->setQueryBuilder($this->createQueryBuilder());
     if ($this->logger) {
         $backend->setLogger($this->logger);
     }
     $manager = $this->serviceLocator->get('VuFind\\RecordDriverPluginManager');
     $factory = new RecordCollectionFactory([$manager, 'getSolrRecord']);
     $backend->setRecordCollectionFactory($factory);
     return $backend;
 }
Exemple #5
0
 /**
  * Support method to run a "refine exception" test.
  *
  * @param string $msg Error message
  *
  * @return void
  */
 protected function runRefineExceptionCall($msg)
 {
     $conn = $this->getConnectorMock(['query']);
     $e = new RemoteErrorException($msg, 400, new \Zend\Http\Response());
     $conn->expects($this->once())->method('query')->with($this->equalTo('browse'))->will($this->throwException($e));
     $back = new Backend($conn);
     $back->alphabeticBrowse('foo', 'bar', 1);
 }
 /**
  * Create the SOLR backend.
  *
  * @param Connector $connector Connector
  *
  * @return Backend
  */
 protected function createBackend(Connector $connector)
 {
     //return parent::createBackend($connector);
     //we can't use zje original funtion because Backend is overwritten by Swissbib
     //look at it later if really necessary
     //$config  = $this->config->get('config');
     $backend = new Backend($connector);
     $backend->setQueryBuilder($this->createQueryBuilder());
     // Spellcheck
     //if (isset($config->Spelling->enabled) && $config->Spelling->enabled) {
     //    if (isset($config->Spelling->simple) && $config->Spelling->simple) {
     //        $dictionaries = array('basicSpell');
     //    } else {
     //        $dictionaries = array('default', 'basicSpell');
     //    }
     //    $backend->setDictionaries($dictionaries);
     //}
     if ($this->logger) {
         $backend->setLogger($this->logger);
     }
     $manager = $this->serviceLocator->get('VuFind\\RecordDriverPluginManager');
     $factory = new RecordCollectionFactory(array($manager, 'getSolrRecord'));
     $backend->setRecordCollectionFactory($factory);
     return $backend;
 }
Exemple #7
0
 /**
  * Retrieve a batch of IDs using regular search.
  *
  * @param Backend $backend Search backend
  * @param int     $offset  Number of terms previously retrieved
  *
  * @return array
  */
 protected function getIdsFromBackendUsingSearch(Backend $backend, $offset)
 {
     $connector = $backend->getConnector();
     $key = $connector->getUniqueKey();
     $params = new ParamBag(['q' => '*:*', 'fl' => $key, 'rows' => $this->countPerPage, 'start' => $offset, 'wt' => 'json', 'sort' => $key . ' asc']);
     $raw = $connector->search($params);
     $result = json_decode($raw);
     $ids = [];
     if (isset($result->response->docs)) {
         foreach ($result->response->docs as $doc) {
             $ids[] = $doc->{$key};
         }
     }
     return $ids;
 }