Exemple #1
0
 public function testFilesystemSubfoldersAutoCreation()
 {
     $directory = new Directory\Filesystem(__DIR__ . '/_tempFiles/_files/dir1/dir2/dir3');
     $this->assertTrue($directory instanceof Directory\DirectoryInterface);
     $directory->close();
     rmdir(__DIR__ . '/_tempFiles/_files/dir1/dir2/dir3');
     rmdir(__DIR__ . '/_tempFiles/_files/dir1/dir2');
     rmdir(__DIR__ . '/_tempFiles/_files/dir1');
 }
 /**
  * Gets the index mapped by the given lucene identifier.
  *
  * @param string $identifier The lucene identifier.
  *
  * @return \ZendSearch\Lucene\Index The lucene index.
  */
 public function getIndex($identifier)
 {
     $config = $this->getConfig($identifier);
     $path = $config['path'];
     if (!$this->checkPath($path)) {
         $this->indexes[$identifier] = Lucene::create($path);
     } else {
         $this->indexes[$identifier] = Lucene::open($path);
     }
     Analyzer::setDefault(new $config['analyzer']());
     $this->indexes[$identifier]->setMaxBufferedDocs($config['max_buffered_docs']);
     $this->indexes[$identifier]->setMaxMergeDocs($config['max_merge_docs']);
     $this->indexes[$identifier]->setMergeFactor($config['merge_factor']);
     ZfFilesystem::setDefaultFilePermissions($config['permissions']);
     if ($config['auto_optimized']) {
         $this->indexes[$identifier]->optimize();
     }
     QueryParser::setDefaultEncoding($config['query_parser_encoding']);
     return $this->indexes[$identifier];
 }
 public function testMerge()
 {
     $segmentsDirectory = new Directory\Filesystem(__DIR__ . '/_source/_files');
     $outputDirectory = new Directory\Filesystem(__DIR__ . '/_files');
     $segmentsList = array('_0', '_1', '_2', '_3', '_4');
     $segmentMerger = new Index\SegmentMerger($outputDirectory, 'mergedSegment');
     foreach ($segmentsList as $segmentName) {
         $segmentMerger->addSource(new Index\SegmentInfo($segmentsDirectory, $segmentName, 2));
     }
     $mergedSegment = $segmentMerger->merge();
     $this->assertTrue($mergedSegment instanceof Index\SegmentInfo);
     unset($mergedSegment);
     $mergedFile = $outputDirectory->getFileObject('mergedSegment.cfs');
     $mergedFileData = $mergedFile->readBytes($outputDirectory->fileLength('mergedSegment.cfs'));
     $sampleFile = $outputDirectory->getFileObject('mergedSegment.cfs.sample');
     $sampleFileData = $sampleFile->readBytes($outputDirectory->fileLength('mergedSegment.cfs.sample'));
     $this->assertEquals($mergedFileData, $sampleFileData);
     $outputDirectory->deleteFile('mergedSegment.cfs');
 }
 private function getIndex() : SearchIndexInterface
 {
     $path = $this->getIndexPath();
     if (!$this->checkIndexPath($path)) {
         $index = Lucene::create($path);
     } else {
         $index = Lucene::open($path);
     }
     Analyzer::setDefault(new CaseInsensitive());
     LuceneFilesystem::setDefaultFilePermissions(0775);
     QueryParser::setDefaultEncoding('UTF-8');
     $index->setMaxBufferedDocs($this->options['max_buffered_docs']);
     $index->setMaxMergeDocs($this->options['max_merge_docs']);
     $index->setMergeFactor($this->options['merge_factor']);
     $index->optimize();
     return $index;
 }
 public function testDelete()
 {
     $directory = new Directory\Filesystem(__DIR__ . '/_source/_files');
     $segmentInfo = new Index\SegmentInfo($directory, '_1', 2, 0);
     $this->assertFalse($segmentInfo->hasDeletions());
     $segmentInfo->delete(0);
     $this->assertTrue($segmentInfo->hasDeletions());
     $delGen = $segmentInfo->getDelGen();
     // don't write changes
     unset($segmentInfo);
     $segmentInfo1 = new Index\SegmentInfo($directory, '_1', 2, $delGen);
     // Changes wasn't written, segment still has no deletions
     $this->assertFalse($segmentInfo1->hasDeletions());
     $segmentInfo1->delete(0);
     $segmentInfo1->writeChanges();
     $delGen = $segmentInfo1->getDelGen();
     unset($segmentInfo1);
     $segmentInfo2 = new Index\SegmentInfo($directory, '_1', 2, $delGen);
     $this->assertTrue($segmentInfo2->hasDeletions());
     unset($segmentInfo2);
     $directory->deleteFile('_1_' . base_convert($delGen, 10, 36) . '.del');
     $segmentInfo3 = new Index\SegmentInfo($directory, '_1', 2, -1);
     $this->assertFalse($segmentInfo3->hasDeletions());
 }