コード例 #1
0
 /**
  * Calculates what the desired revisit factor should be.
  *
  * @param \Simgroep\ConcurrentSpiderBundle\PersistenceEvent $event
  */
 public function onPrePersistDocument(PersistenceEvent $event)
 {
     $newDocument = $event->getDocument();
     $currentDocument = $this->indexer->findDocumentByUrl($newDocument['url'], $event->getMetadata());
     if (null === $currentDocument || $currentDocument['revisit_after'] == 0) {
         $newDocument['revisit_after'] = $this->defaultRevisitFactor;
         $expireDate = new DateTime();
         $expireDate->modify(sprintf('+%s minute', $newDocument['revisit_after']));
         $newDocument['revisit_expiration'] = $expireDate->format('Y-m-d\\TH:i:s\\Z');
         return;
     }
     if ($this->createDocumentChecksum($currentDocument) === $this->createDocumentChecksum($newDocument)) {
         $this->increaseRevisitFactor($newDocument, $currentDocument['revisit_after']);
     } else {
         $this->decreaseRevisitFactor($newDocument, $currentDocument['revisit_after']);
     }
 }
コード例 #2
0
 /**
  * @test
  */
 public function isNullReturnedWhenNoDocumentFoundByUrl()
 {
     $url = 'https://github.com';
     $selectQuery = $this->getMockBuilder('Solarium\\QueryType\\Select\\Query\\Query')->setMethods(['setQuery'])->getMock();
     $selectQuery->expects($this->once())->method('setQuery')->with($this->callback(function ($subject) use($url) {
         return preg_match(sprintf('/^id:%s$/', sha1($url)), $subject);
     }))->will($this->returnValue($selectQuery));
     $result = $this->getMockBuilder('Solarium\\QueryType\\Select\\Result\\Result')->disableOriginalConstructor()->getMock();
     $solrClient = $this->getMockBuilder('Solarium\\Client')->setMethods(['createSelect', 'select'])->getMock();
     $solrClient->expects($this->once())->method('createSelect')->will($this->returnValue($selectQuery));
     $solrClient->expects($this->once())->method('select')->will($this->returnValue($result));
     $indexer = new Indexer($solrClient, [], 50);
     $this->assertNull($indexer->findDocumentByUrl($url));
 }