/** * Build request for a MoreLikeThis query. * * @param QueryInterface|Query $query * * @return Request */ public function build(QueryInterface $query) { $request = parent::build($query); // add mlt params to request $request->addParam('mlt.interestingTerms', $query->getInterestingTerms()); $request->addParam('mlt.match.include', $query->getMatchInclude()); $request->addParam('mlt.match.offset', $query->getMatchOffset()); $request->addParam('mlt.fl', implode(',', $query->getMltFields())); $request->addParam('mlt.mintf', $query->getMinimumTermFrequency()); $request->addParam('mlt.mindf', $query->getMinimumDocumentFrequency()); $request->addParam('mlt.minwl', $query->getMinimumWordLength()); $request->addParam('mlt.maxwl', $query->getMaximumWordLength()); $request->addParam('mlt.maxqt', $query->getMaximumQueryTerms()); $request->addParam('mlt.maxntp', $query->getMaximumNumberOfTokens()); $request->addParam('mlt.boost', $query->getBoost()); $request->addParam('mlt.qf', $query->getQueryFields()); // convert query to stream if necessary if (true === $query->getQueryStream()) { $request->removeParam('q'); $request->setRawData($query->getQuery()); $request->setMethod(Request::METHOD_POST); $request->addHeader('Content-Type: text/plain; charset=utf-8'); } return $request; }
public function testWithTags() { $this->query->setTags(array('t1', 't2')); $this->query->setQuery('cat:1'); $request = $this->builder->build($this->query); $this->assertEquals('{!tag=t1,t2}cat:1', $request->getParam('q')); }