/** * @dataProvider termProvider */ public function testRebuildSearchKey($languageCode, $termText, $searchText, $matches) { /* @var TermSqlIndex $termCache */ $termCache = WikibaseRepo::getDefaultInstance()->getStore()->getTermIndex(); // make term in item $item = new Item(new ItemId('Q42')); $item->setLabel($languageCode, $termText); // save term $termCache->clear(); $termCache->saveTermsOfEntity($item); // remove search key $dbw = wfGetDB(DB_MASTER); $dbw->update($termCache->getTableName(), array('term_search_key' => ''), array(), __METHOD__); // rebuild search key $builder = new TermSearchKeyBuilder($termCache); $builder->setRebuildAll(true); $builder->rebuildSearchKey(); // remove search key $term = new TermIndexEntry(); $term->setLanguage($languageCode); $term->setText($searchText); $options = array('caseSensitive' => false); $obtainedTerms = $termCache->getMatchingTerms(array($term), TermIndexEntry::TYPE_LABEL, Item::ENTITY_TYPE, $options); $this->assertEquals($matches ? 1 : 0, count($obtainedTerms)); if ($matches) { $obtainedTerm = array_shift($obtainedTerms); $this->assertEquals($termText, $obtainedTerm->getText()); } }
/** * @dataProvider termProvider */ public function testGetMatchingTerms2($languageCode, $termText, $searchText, $matches) { $termIndex = $this->getTermIndex(); $termIndex->clear(); $item = new Item(new ItemId('Q42')); $item->setLabel($languageCode, $termText); $termIndex->saveTermsOfEntity($item); $term = new TermIndexEntry(); $term->setLanguage($languageCode); $term->setText($searchText); $options = array('caseSensitive' => false); //FIXME: test with arrays for term types and entity types! $obtainedTerms = $termIndex->getMatchingTerms(array($term), TermIndexEntry::TYPE_LABEL, Item::ENTITY_TYPE, $options); $this->assertEquals($matches ? 1 : 0, count($obtainedTerms)); if ($matches) { $obtainedTerm = array_shift($obtainedTerms); $this->assertEquals($termText, $obtainedTerm->getText()); } }