/** * this will load the file containing the class * * @param string $className */ public static function autoload($className) { if (!is_string($className)) { throw new InvalidArgumentException(); } if (array_key_exists($className, self::$classMap)) { require_once dirname(__FILE__) . '/' . self::$classMap[$className]; } else { parent::autoload($className); } }
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package php_solr * @subpackage indexer * @author Alexander M. Turek <*****@*****.**> * @copyright 2008, Alexander M. Turek * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version $Id$ */ Solr::autoload('SolrField'); /** * A Solr Field. * * @author Alexander M. Turek <*****@*****.**> * @package php_solr * @subpackage indexer */ class SolrSimpleField implements SolrField { /** * The name of the field. * * @var string */ private $name = null;
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package php_solr * @subpackage testcases * @author Alexander M. Turek <*****@*****.**> * @copyright 2008, Alexander M. Turek * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version $Id$ */ require_once 'PHPUnit/Framework.php'; require_once dirname(__FILE__) . '/../src/Solr.php'; Solr::autoload('SolrSimpleDocument'); Solr::autoload('SolrSimpleField'); /** * Test case for {@link SolrSimpleDocument}. * * @package php_solr * @subpackage testcases * @author Alexander M. Turek <*****@*****.**> */ class SolrSimpleDocumentTest extends PHPUnit_Framework_TestCase { /** * Tests the normal usage of the class. */ function testNormalUsage() { $doc = new SolrSimpleDocument();
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package php_solr * @subpackage testcases * @author Alexander M. Turek <*****@*****.**> * @copyright 2008, Alexander M. Turek * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version $Id$ */ require_once 'PHPUnit/Framework.php'; require_once dirname(__FILE__) . '/../src/Solr.php'; Solr::autoload('SolrConnection'); Solr::autoload('SolrDocument'); Solr::autoload('SolrField'); Solr::autoload('SolrHttpClient'); /** * Test case for the <add /> command. * * @package php_solr * @subpackage testcases * @author Alexander M. Turek <*****@*****.**> */ class SolrAddCommandTest extends PHPUnit_Framework_TestCase { /** * A {@link SolrConnection} instance with a mocked HTTP_Client. * * @var SolrConnection */ private $solr = null;
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package php_solr * @subpackage search * @author Alexander M. Turek <*****@*****.**> * @copyright 2009, Alexander M. Turek * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version $Id$ */ Solr::autoload('SolrQuery'); /** * Common parameters for facet fields. * * @see http://wiki.apache.org/solr/SimpleFacetParameters * * @package php_solr * @subpackage search * @author Alexander M. Turek <*****@*****.**> * @since 0.4.1 */ abstract class SolrFacetFieldParameters { /** * The prefix. *
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package php_solr * @subpackage search * @author Alexander M. Turek <*****@*****.**> * @copyright 2009, Alexander M. Turek * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version $Id$ */ Solr::autoload('SolrFacetFieldParameters'); /** * A facet field. * * @see http://wiki.apache.org/solr/SimpleFacetParameters * * @package php_solr * @subpackage search * @author Alexander M. Turek <*****@*****.**> * @since 0.4.1 */ class SolrFacetField extends SolrFacetFieldParameters { /** * Constructor for {@link SolrFacetField}. *
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package php_solr * @subpackage testcases * @author Alexander M. Turek <*****@*****.**> * @copyright 2008, 2009, Alexander M. Turek * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version $Id$ */ require_once 'PHPUnit/Framework.php'; require_once dirname(__FILE__) . '/../src/Solr.php'; Solr::autoload('SolrConnection'); Solr::autoload('SolrHttpClient'); Solr::autoload('SolrSearchResult'); /** * Test case for {@link SolrConnection::query()}. * * @package php_solr * @subpackage testcases * @author Alexander M. Turek <*****@*****.**> */ class SolrQueryCommandTest extends PHPUnit_Framework_TestCase { /** * A Solr instance with a mocked HTTP_Client * * @var SolrConnection */ private $solr = null;
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package php_solr * @subpackage testcases * @author Alexander M. Turek <*****@*****.**> * @copyright 2008, Alexander M. Turek * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version $Id$ */ require_once 'PHPUnit/Framework.php'; require_once dirname(__FILE__) . '/../src/Solr.php'; Solr::autoload('SolrConnection'); Solr::autoload('SolrHttpClient'); Solr::autoload('SolrException'); /** * Test case for the simple commands. * * @package php_solr * @subpackage testcases * @author Alexander M. Turek <*****@*****.**> */ class SolrSimpleCommandsTest extends PHPUnit_Framework_TestCase { /** * A Solr instance with a mocked HTTP_Client * * @var SolrConnection */ private $solr = null;
/** * Sends an HTTP request. * * @param string $path The relative path for this request. * @param string $body The XML code for the request body. * * @return HTTP_Request2_Response */ public function sendRequest($path, $body = null) { $request = $this->createRequest(); $request->setUrl($this->solrBaseUrl . $path)->setAdapter('HTTP_Request2_Adapter_Curl')->setHeader('User-Agent', 'php_solr/' . Solr::VERSION); if (!is_null($body)) { $request->setMethod(HTTP_Request2::METHOD_POST)->setHeader('Content-Type', 'text/xml')->setBody($body); } else { $request->setMethod(HTTP_Request2::METHOD_GET); } $response = $request->send(); if (!$response instanceof HTTP_Request2_Response) { throw new RuntimeException('Invalid response.'); } if ($response->getStatus() != 200) { Solr::autoload('SolrException'); throw new SolrException('Solr returned HTTP status ' . $response->getStatus() . '.'); } return $response; }
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package php_solr * @subpackage testcases * @author Alexander M. Turek <*****@*****.**> * @copyright 2009, Alexander M. Turek * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version $Id$ */ require_once 'PHPUnit/Framework.php'; require_once dirname(__FILE__) . '/../src/Solr.php'; Solr::autoload('SolrFacetField'); /** * Test case for {@link SolrFacetField}. * * @package php_solr * @subpackage testcases * @author Alexander M. Turek <*****@*****.**> */ class SolrFacetFieldTest extends PHPUnit_Framework_TestCase { /** * The object under test. * * @var SolrFacetField */ private $field;
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package php_solr * @subpackage testcases * @author Alexander M. Turek <*****@*****.**> * @copyright 2008, 2009, Alexander M. Turek * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version $Id$ */ require_once 'PHPUnit/Framework.php'; require_once dirname(__FILE__) . '/../src/Solr.php'; Solr::autoload('SolrHit'); /** * Test case for {@link SolrHit}. * * @package php_solr * @subpackage testcases * @author Alexander M. Turek <*****@*****.**> */ class SolrHitTest extends PHPUnit_Framework_TestCase { /** * Tests normal usage with score. */ function testWithScore() { $jsonCode = '{"id":42,"title":"PHP 5","score":4.102452}';
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package php_solr * @subpackage search * @author Alexander M. Turek <*****@*****.**> * @copyright 2008, 2009, Alexander M. Turek * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version $Id$ */ Solr::autoload('SolrHit'); Solr::autoload('SolrFacetCounts'); /** * A search result. * * An instance of this class is returned by {@link SolrConnection::query()}. * This object represents a the result of the query sent. It may be browsed via * a foreach loop as if it was an array of {@link SolrHit} objects. * * <code> * require_once 'php_solr/Solr.php'; * * $solr = Solr::connect(); * $result = $solr->query('php'); * * echo 'We have found ' . $result->getNumFound() . ' documents total.' . "\n"; * echo 'Our result set contains ' . count($result) . ' documents.' . "\n";
/** * {@link SolrDocument} implementation. * * @uses SolrSimpleField * * @return array(SolrField) */ public function getFields() { Solr::autoload('SolrSimpleField'); $fields = array(); foreach ($this->fields as $key => $value) { if (is_array($value)) { foreach ($value as $part) { $fields[] = new SolrSimpleField($key, $part); } } else { $fields[] = new SolrSimpleField($key, strval($value)); } } return $fields; }
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package php_solr * @subpackage indexer * @author Alexander M. Turek <*****@*****.**> * @copyright 2008, 2009, Alexander M. Turek * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version $Id$ */ Solr::autoload('SolrDocument'); /** * A Solr Document. * * @author Alexander M. Turek <*****@*****.**> * @package php_solr * @subpackage indexer */ class SolrSimpleDocument implements SolrDocument { /** * The fields of this document. * * @var array(SolrField) */ private $fields = array();
/** * Getter for magic properties. * * @param string $property The parameter. * @return mixed */ public function __get($property) { if (!is_string($property)) { throw new InvalidArgumentException(); } switch ($property) { case 'facets': if (is_null($this->facets)) { Solr::autoload('SolrSimpleFacets'); $this->facets = new SolrSimpleFacets(); } return $this->facets; default: throw new OutOfRangeException('Undefined property.'); } }
/** * Sends a query to the Solr server. * * Although it is recommended to provide the query as a {@link SolrQuery} * object, it is also possible to pass it as a string. So, the following * two lines of code produce exactly the same result: * * <code> * $result = $solr->query('hello world'); * $result = $solr->query(new SolrQuery('hello world')); * </code> * * Please refer to the {@link SolrQuery} class for more details on query * parameters and the query syntax. * * @see SolrQuery * @uses json_decode() * * @param SolrQuery|string $query The query. * * @return SolrSearchResult */ public function query($query) { Solr::autoload('SolrSearchResult'); if (is_string($query)) { Solr::autoload('SolrQuery'); $query = new SolrQuery($query); } elseif (!$query instanceof SolrQuery) { throw new InvalidArgumentException('Invalid query.'); } $response = $this->httpClient->sendRequest('/select' . $query->getQueryString()); return SolrSearchResult::parseResponse($response->getBody()); }
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package php_solr * @subpackage testcases * @author Alexander M. Turek <*****@*****.**> * @copyright 2008, Alexander M. Turek * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version $Id$ */ require_once 'PHPUnit/Framework.php'; require_once dirname(__FILE__) . '/../src/Solr.php'; Solr::autoload('SolrDateField'); /** * Test case for {@link SolrDateField}. * * @package php_solr * @subpackage testcases * @author Alexander M. Turek <*****@*****.**> */ class SolrDateFieldTest extends PHPUnit_Framework_Testcase { /** * A timestamp for testing. * * @var integer */ private $timestamp = 455015730;