public function testFilteredSearch() { $client = new Elastica_Client(); $index = $client->getIndex('test'); $index->create(array(), true); $type = $index->getType('helloworld'); $doc = new Elastica_Document(1, array('id' => 1, 'email' => '*****@*****.**', 'username' => 'hanswurst', 'test' => array('2', '3', '5'))); $type->addDocument($doc); $doc = new Elastica_Document(2, array('id' => 2, 'email' => '*****@*****.**', 'username' => 'peter', 'test' => array('2', '3', '5'))); $type->addDocument($doc); $queryString = new Elastica_Query_QueryString('test*'); $filter1 = new Elastica_Filter_Term(); $filter1->addTerm('username', 'peter'); $filter2 = new Elastica_Filter_Term(); $filter2->addTerm('username', 'qwerqwer'); $query1 = new Elastica_Query_Filtered($queryString, $filter1); $query2 = new Elastica_Query_Filtered($queryString, $filter2); $index->refresh(); $resultSet = $type->search($queryString); $this->assertEquals(2, $resultSet->count()); $resultSet = $type->search($query1); $this->assertEquals(1, $resultSet->count()); $resultSet = $type->search($query2); $this->assertEquals(0, $resultSet->count()); }
public function testToArray() { $query = new Elastica_Filter_Term(); $key = 'name'; $value = 'ruflin'; $query->setTerm($key, $value); $data = $query->toArray(); $this->assertInternalType('array', $data['term']); $this->assertEquals(array($key => $value), $data['term']); }
public function testMoreLikeThisApi() { $client = new Elastica_Client(array('persistent' => false)); $index = $client->getIndex('elastica_test'); $index->create(array('index' => array('number_of_shards' => 1, 'number_of_replicas' => 0)), true); $type = new Elastica_Type($index, 'mlt_test'); $type->addDocument(new Elastica_Document(1, array('visible' => true, 'name' => 'bruce wayne batman'))); $type->addDocument(new Elastica_Document(2, array('visible' => true, 'name' => 'bruce wayne'))); $type->addDocument(new Elastica_Document(3, array('visible' => false, 'name' => 'bruce wayne'))); $type->addDocument(new Elastica_Document(4, array('visible' => true, 'name' => 'batman'))); $type->addDocument(new Elastica_Document(5, array('visible' => false, 'name' => 'batman'))); $type->addDocument(new Elastica_Document(6, array('visible' => true, 'name' => 'superman'))); $type->addDocument(new Elastica_Document(7, array('visible' => true, 'name' => 'spiderman'))); $index->refresh(); $document = $type->getDocument(1); // Return all similar $resultSet = $type->moreLikeThis($document, array('min_term_freq' => '1', 'min_doc_freq' => '1')); $this->assertEquals(4, $resultSet->count()); // Return just the visible similar $query = new Elastica_Query(); $filterTerm = new Elastica_Filter_Term(); $filterTerm->setTerm('visible', true); $query->setFilter($filterTerm); $resultSet = $type->moreLikeThis($document, array('min_term_freq' => '1', 'min_doc_freq' => '1'), $query); $this->assertEquals(2, $resultSet->count()); }