public function testToArray() { $mainBool = new Bool(); $idsFilter1 = new Ids(); $idsFilter1->setIds(1); $idsFilter2 = new Ids(); $idsFilter2->setIds(2); $idsFilter3 = new Ids(); $idsFilter3->setIds(3); $childBool = new Bool(); $childBool->addShould(array($idsFilter1, $idsFilter2)); $mainBool->addShould(array($childBool, $idsFilter3)); $expectedArray = array('bool' => array('should' => array(array(array('bool' => array('should' => array(array($idsFilter1->toArray(), $idsFilter2->toArray())))), $idsFilter3->toArray())))); $this->assertEquals($expectedArray, $mainBool->toArray()); }
/** * @param string $term text to search * @return \Status */ public function searchText($term) { $term = trim($term); // No searching for nothing! That takes forever! if (!$term) { return null; } $query = new Query(); $offset = min($this->offset, static::MAX_OFFSET); if ($offset) { $query->setFrom($offset); } if ($this->limit) { $query->setSize($this->limit); } $filter = new Bool(); // filters if ($this->namespaces) { $filter->addMust(new Terms('namespace', $this->namespaces)); } if ($this->pageIds) { $filter->addMust(new Terms('pageid', $this->pageIds)); } if ($this->moderationStates) { $filter->addMust(new Terms('revisions.moderation_state', $this->moderationStates)); } // only apply filters if there are any if ($filter->toArray()) { $query->setFilter($filter); } $sortArgs = $this->getSortArgs(); if (isset($sortArgs[$this->sort]) && $sortArgs[$this->sort]) { $query->setSort($sortArgs[$this->sort]); } // @todo: interwiki stuff? (see \CirrusSearch) $searcher = new Searcher($query, false, $this->type); return $searcher->searchText($term); }