예제 #1
0
 function testPartialUpdate()
 {
     $initialSource = new Search_ContentSource_Static(array('HomePage' => array('data' => 'initial'), 'SomePage' => array('data' => 'initial'), 'Untouchable' => array('data' => 'initial')), array('data' => 'sortable'));
     $finalSource = new Search_ContentSource_Static(array('SomePage' => array('data' => 'final'), 'OtherPage' => array('data' => 'final'), 'Untouchable' => array('data' => 'final')), array('data' => 'sortable'));
     $dir = dirname(__FILE__) . '/test_index';
     $edir = escapeshellarg($dir);
     `rm -Rf {$edir}`;
     $index = new Search_Lucene_Index($dir);
     $indexer = new Search_Indexer($index);
     $indexer->addContentSource('wiki page', $initialSource);
     $indexer->rebuild();
     $indexer = new Search_Indexer($index);
     $indexer->addContentSource('wiki page', $finalSource);
     $indexer->update(array(array('object_type' => 'wiki page', 'object_id' => 'HomePage'), array('object_type' => 'wiki page', 'object_id' => 'SomePage'), array('object_type' => 'wiki page', 'object_id' => 'OtherPage')));
     $query = new Search_Query();
     $query->filterType('wiki page');
     $result = $query->search($index);
     $this->assertEquals(3, count($result));
     $doc0 = $result[0];
     $doc1 = $result[1];
     $doc2 = $result[2];
     $this->assertEquals('Untouchable', $doc0['object_id']);
     $this->assertEquals('initial', $doc0['data']);
     $this->assertEquals('final', $doc1['data']);
     $this->assertEquals('final', $doc2['data']);
     `rm -Rf {$edir}`;
 }