getConnection()->createCommand(); // delete index if ($command->indexExists('yiitest')) { $command->deleteIndex('yiitest'); } } private function prepareDbData() { $command = $this->getConnection()->createCommand(); $command->insert('yiitest', 'article', ['title' => 'I love yii!'], 1); $command->insert('yiitest', 'article', ['title' => 'Symfony2 is another framework'], 2); $command->insert('yiitest', 'article', ['title' => 'Yii2 out now!'], 3); $command->insert('yiitest', 'article', ['title' => 'yii test'], 4); $command->flushIndex('yiitest'); } public function testQueryBuilderRespectsQuery() { $queryParts = ['field' => ['title' => 'yii']]; $queryBuilder = new QueryBuilder($this->getConnection()); $query = new Query(); $query->query = $queryParts; $build = $queryBuilder->build($query); $this->assertTrue(array_key_exists('queryParts', $build)); $this->assertTrue(array_key_exists('query', $build['queryParts'])); $this->assertFalse(array_key_exists('match_all', $build['queryParts']), 'Match all should not be set'); $this->assertSame($queryParts, $build['queryParts']['query']); } public function testYiiCanBeFoundByQuery() { $this->prepareDbData(); $queryParts = ['field' => ['title' => 'yii']]; $query = new Query(); $query->from('yiitest', 'article'); $query->query = $queryParts; $result = $query->search($this->getConnection()); $this->assertEquals(2, $result['hits']['total']); } public function testFuzzySearch() { $this->prepareDbData(); $queryParts = [ "fuzzy_like_this" => [ "fields" => ["title"], "like_text" => "Similar to YII", "max_query_terms" => 4 ] ]; $query = new Query(); $query->from('yiitest', 'article'); $query->query = $queryParts; $result = $query->search($this->getConnection()); $this->assertEquals(3, $result['hits']['total']); } }