Esempio n. 1
0
 /**
  * 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);
     }
 }
Esempio n. 2
0
 * 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();
Esempio n. 4
0
 * 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.
     * 
Esempio n. 6
0
 * 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}.
     * 
Esempio n. 7
0
 * 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;
Esempio n. 9
0
 /**
  * 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;
 }
Esempio n. 10
0
 * 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;
Esempio n. 11
0
 * 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}';
Esempio n. 12
0
 * 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";
Esempio n. 13
0
 /**
  * {@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;
 }
Esempio n. 14
0
 * 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();
Esempio n. 15
0
 /**
  * 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.');
     }
 }
Esempio n. 16
0
 /**
  * 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());
 }
Esempio n. 17
0
 * 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;