コード例 #1
0
ファイル: IndexerTest.php プロジェクト: rjsmelo/tiki
 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}`;
 }
コード例 #2
0
 /**
  * @dataProvider sortCases
  */
 function testOrdering($mode, $expected)
 {
     $query = new Search_Query();
     $query->filterType('wiki page');
     $query->setOrder($mode);
     $results = $query->search($this->index);
     $this->assertOrderIs($expected, $results);
 }
コード例 #3
0
ファイル: QueryTest.php プロジェクト: railfuture/tiki-website
 function testFilterType()
 {
     $index = new Search_Index_Memory();
     $query = new Search_Query('hello');
     $query->filterType('wiki page');
     $query->search($index);
     $expr = new Search_Expr_And(array(new Search_Expr_Token('hello', 'plaintext', 'contents'), new Search_Expr_Token('wiki page', 'identifier', 'object_type')));
     $this->assertEquals($expr, $index->getLastQuery());
 }
コード例 #4
0
ファイル: FacetTest.php プロジェクト: rjsmelo/tiki
 function testRequireFacet()
 {
     $facet = new Search_Query_Facet_Term('categories');
     $query = new Search_Query();
     $query->filterType('wiki page');
     $query->requestFacet($facet);
     $result = $query->search($this->index);
     $values = $result->getFacet($facet);
     $this->assertEquals(new Search_ResultSet_FacetFilter($facet, array(array('value' => 1, 'count' => 3), array('value' => 2, 'count' => 2), array('value' => 'orphan', 'count' => 1), array('value' => 3, 'count' => 1))), $values);
 }
コード例 #5
0
 private function assertResultCorrect($count, $from, $perPage, $first, $last)
 {
     $this->addDocuments($count);
     $query = new Search_Query();
     $query->filterType('article');
     $query->setRange($from, $perPage);
     $result = $query->search($this->index);
     $this->assertEquals($count, count($result), 'total count');
     $real = array();
     foreach ($result as $hit) {
         $real[] = $hit;
     }
     $this->assertEquals($first, $real[0]['object_id'], 'first entry');
     $this->assertEquals($last, $real[count($real) - 1]['object_id'], 'last entry');
 }
コード例 #6
0
ファイル: StemmingTest.php プロジェクト: jkimdon/cohomeals
 function testFilterIdentifierExactly()
 {
     $query = new Search_Query();
     $query->filterType('wikipage?!');
     $this->assertGreaterThan(0, count($query->search($this->index)));
 }
コード例 #7
0
 private function cs_dataappend_type(Search_Query $query, $config, $value)
 {
     if ($config['type'] != 'text') {
         if (!empty($config['_value'])) {
             $value = $config['_value'];
             $query->filterType($value);
         } elseif ($value) {
             $query->filterType($value);
         }
     }
 }
コード例 #8
0
 function buildQuery(array $filter)
 {
     $categlib = TikiLib::lib('categ');
     $query = new Search_Query();
     $query->setWeightCalculator($this->getWeightCalculator());
     if (!Perms::get()->admin) {
         $query->filterPermissions(Perms::get()->getGroups());
     }
     $jail_query = '';
     if ($jail = $categlib->get_jail()) {
         $i = 0;
         foreach ($jail as $cat) {
             $i++;
             $jail_query .= $cat;
             if ($i < count($jail)) {
                 $jail_query .= ' or ';
             }
         }
         $query->filterCategory($jail_query, true);
     }
     if (isset($filter['type']) && $filter['type']) {
         $query->filterType($filter['type']);
     }
     if (isset($filter['categories']) && $filter['categories']) {
         $query->filterCategory($filter['categories'], isset($filter['deep']));
     }
     if (isset($filter['tags']) && $filter['tags']) {
         $query->filterTags($filter['tags']);
     }
     if (isset($filter['content']) && $filter['content']) {
         $query->filterContent($filter['content'], TikiLib::lib('tiki')->get_preference('unified_default_content', array('contents'), true));
     }
     if (isset($filter['autocomplete']) && $filter['autocomplete']) {
         $query->filterInitial($filter['autocomplete']);
     }
     if (isset($filter['language']) && $filter['language']) {
         $q = $filter['language'];
         if (preg_match('/^\\w+\\-\\w+$/', $q)) {
             $q = "\"{$q}\"";
         }
         if (isset($filter['language_unspecified'])) {
             $q = "({$q}) or unknown";
         }
         $query->filterLanguage($q);
     }
     unset($filter['type']);
     unset($filter['categories']);
     unset($filter['deep']);
     unset($filter['tags']);
     unset($filter['content']);
     unset($filter['language']);
     unset($filter['autocomplete']);
     foreach ($filter as $key => $value) {
         if ($value) {
             $query->filterContent($value, $key);
         }
     }
     return $query;
 }