Commit 702ca05d authored by Gasol Wu's avatar Gasol Wu

MoreLikeThis handler can pass raw POST body as stream

parent 44d58ac6
...@@ -56,8 +56,14 @@ class Solarium_Client_RequestBuilder_MoreLikeThis extends Solarium_Client_Reques ...@@ -56,8 +56,14 @@ class Solarium_Client_RequestBuilder_MoreLikeThis extends Solarium_Client_Reques
$request = new Solarium_Client_Request; $request = new Solarium_Client_Request;
$request->setHandler($query->getHandler()); $request->setHandler($query->getHandler());
if ($query->isStream()) {
$request->setRawData($query->getQuery());
$request->setMethod(Solarium_Client_Request::METHOD_POST);
$request->addHeader('Content-Type: text/plain; charset=utf-8');
} else {
$request->addParam('q', $query->getQuery());
}
// add basic params to request // add basic params to request
$request->addParam('q', $query->getQuery());
$request->addParam('mlt.match.offset', $query->getStart()); $request->addParam('mlt.match.offset', $query->getStart());
$request->addParam('rows', $query->getRows()); $request->addParam('rows', $query->getRows());
$request->addParam('fl', implode(',', $query->getFields())); $request->addParam('fl', implode(',', $query->getFields()));
......
...@@ -88,6 +88,7 @@ class Solarium_Query_MoreLikeThis extends Solarium_Query ...@@ -88,6 +88,7 @@ class Solarium_Query_MoreLikeThis extends Solarium_Query
'mlt.fl' => 'text', 'mlt.fl' => 'text',
'mlt.interestingTerms' => 'none', 'mlt.interestingTerms' => 'none',
'mlt.match.include' => 'false', 'mlt.match.include' => 'false',
'stream' => false
); );
/** /**
...@@ -185,11 +186,24 @@ class Solarium_Query_MoreLikeThis extends Solarium_Query ...@@ -185,11 +186,24 @@ class Solarium_Query_MoreLikeThis extends Solarium_Query
* escaping of user input. * escaping of user input.
* *
* @param string $query * @param string $query
* @param boolean $stream true for POST requests where the content-type is
* not "application/x-www-form-urlencoded", the raw POST body is passed as a stream.
* @link http://wiki.apache.org/solr/ContentStream ContentStream
* @return Solarium_Query_Select Provides fluent interface * @return Solarium_Query_Select Provides fluent interface
*/ */
public function setQuery($query) public function setQuery($query, $stream = false)
{ {
return $this->_setOption('query', trim($query)); return $this->_setOption('stream', $stream)
->_setOption('query', trim($query));
}
/**
* @see setQuery
* @return boolean
*/
public function isStream()
{
return $this->getOption('stream');
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment