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());
 }
Example #2
0
 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']);
 }
Example #3
0
	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());
	}