Example #1
0
 /**
  * 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'));
 }