diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 82bea17e..af582151 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,6 +1,70 @@
Search API Solr search 1.x, dev (xx/xx/xxxx):
---------------------------------------------
+Search API Solr search 1.2 (09/01/2013):
+----------------------------------------
+- #1246730 by febbraro, maciej.zgadzaj, drunken monkey: Added a way to alter
+ the Solr document when indexing.
+- #2053553 by drunken monkey, andrewbelcher: Fixed spatial features with clean
+ field identifiers.
+- #2054373 by drunken monkey: Added the option to use clean field identifiers.
+- #1992806 by drunken monkey: Documented problems with Solr 4.3+.
+- #2045355 by drunken monkey, arpieb: Fixed result mapping of item IDs.
+- #2050157 by izus: Fixed typo in stopwords.txt.
+
+Search API Solr search 1.1 (07/21/2013):
+----------------------------------------
+- #1957730 by drunken monkey: Fixed filter query strings for negated filters.
+- #2010818 by kenorb, drunken monkey: Added new Files tab showing all used solr
+ config files.
+- #2042201 by klausi: Fixed timeouts while optimizing Solr server.
+- #2034719 by fago: Added raw term to autocompletion response.
+- #2027843 by fago, drunken monkey: Made the Solr response available as part of
+ the search results.
+- #1834614 by drunken monkey: Fixed date fields in MLT queries.
+- #1970652 by jsteggink: Fixed highlighting for text fields.
+- #2016169 by tomdearden, drunken monkey: Fixed parsing of facets on
+ multi-valued fields.
+- #2008034 by bdecarne: Fixed highlighting in multi-index searches.
+
+Search API Solr search 1.0 (06/09/2013):
+----------------------------------------
+- #1896080 by drunken monkey: Included additional required config files in the
+ module.
+- #1919572 by chaby: Fixed indexing of geohashes.
+- #2004596 by drunken monkey: Fixed "More Like This" for Solr 4.x.
+- #2007214 by drunken monkey: Fixed unsetting of object properties.
+- #1884312 by drunken monkey, mvc: Fixed resetting of HTTP password upon
+ re-saving of the configuration form.
+- #1957774 by drunken monkey: Fixed displayed link to local Solr servers.
+- #1721262 by Steven Jones, das-peter, drunken monkey: Added field collapsing
+ support.
+- #1549244 by cferthorney, drunken monkey: Added SSL Support for Solr servers.
+
+Search API Solr search 1.0, RC 5 (05/17/2013):
+----------------------------------------------
+- #1190462 by drunken monkey: Documented that enabling HTML filter makes sense.
+- #1986284 by drunken monkey: Updated common configs to the latest version.
+- #1990422 by populist, drunken monkey: Added support for custom stream contexts
+ for HTTP requests.
+- #1957890 by drunken monkey, jwilson3: Fixed several bugs for facets.
+- #1676224 by dasjo, morningtime, drunken monkey: Added support for Solr 4.x.
+- #1985522 by chaby: Fixed use of instance method in static escape() method.
+- #1979102 by drunken monkey: Fixed wrong limit for limit-less searches.
+- #1978632 by chaby, drunken monkey: Fixed wrong check on softCommit.
+- #1978600 by chaby: Fixed hook_requirements() for install phase.
+- #1976930 by drunken monkey: Fixed duplicate method in SearchApiSolrField.
+
+Search API Solr search 1.0, RC 4 (04/22/2013):
+----------------------------------------------
+- #1744250 by mollux, drunken monkey, das-peter: Added support for
+ location-based searches.
+- #1846254 by drunken monkey: Removed the SolrPhpClient dependency.
+- #1934450 by jwilson3, jlapp: Fixed reference to removed method
+ getFacetField().
+- #1900644 by Deciphered: Fixed facet handling for multi-index searches.
+- #1897386 by drunken monkey, NIck_vh: Update the common schema.
+
Search API Solr search 1.0, RC 3 (01/06/2013):
----------------------------------------------
- #1828260 by drunken monkey: Fixed filtering by index in multi-index searches.
diff --git a/INSTALL.txt b/INSTALL.txt
index 18cb6c73..d8c1827a 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -1,39 +1,3 @@
-Prerequisite:
-- Java 6 or higher
-
-Steps necessary:
-- Download Solr PHP client
-- Setting up Solr
-
-Download Solr PHP client
-------------------------
-
-This module uses an external PHP library for communicating with Solr servers. Go
-to [1] and download version r60 of this library. (The older version r22 is also
-still supported, but this might change in the future.)
-
-[1] http://code.google.com/p/solr-php-client/downloads/list
-
-Afterwards, unpack this archive to Drupal's libraries folder, so the directory
-tree looks like this:
-
-DRUPAL_ROOT/sites/all/libraries/
- |- SolrPhpClient
- |- Apache/
- |- ChangeLog
- ...
-
-The library should then be found by the module.
-
-Note: If you have the Libraries API [2] module installed, you can also place the
-library into any other directory recognized by the Libraries API, e.g.
-(depending on the module version):
-- DRUPAL_ROOT/libraries
-- DRUPAL_ROOT/profiles/PROFILE/libraries
-- DRUPAL_ROOT/sites/CONF_DIR/libraries
-
-[2] http://drupal.org/project/libraries
-
Setting up Solr
---------------
@@ -41,38 +5,71 @@ In order for this module to work, you will first need to set up a Solr server.
For this, you can either purchase a server from a web Solr hosts or set up your
own Solr server on your web server (if you have the necessary rights to do so).
If you want to use a hosted solution, a number of companies are listed on the
-module's project page [3]. Otherwise, please follow the instructions below.
+module's project page [1]. Otherwise, please follow the instructions below.
+A more detailed set of instructions is available at [2].
-[3] http://drupal.org/project/search_api_solr
+[1] https://drupal.org/project/search_api_solr
+[2] https://drupal.org/node/1999310
-Download the latest version of Solr 3.x from [4] and unpack the archive
+As a pre-requisite for running your own Solr server, you'll need Java 6 or
+higher.
+
+Download the latest version of Solr 4.x from [3] and unpack the archive
somewhere outside of your web server's document tree.
-[4] http://www.apache.org/dyn/closer.cgi/lucene/solr/
+[3] http://www.apache.org/dyn/closer.cgi/lucene/solr/
-This module also supports Solr 1.4, but its use is discouraged due to worse
-performance and some features not being supported. Solr 4.x is not supported by
-this module yet.
+This module also supports Solr 1.4 and 3.x. For better performance and more
+features, 4.x should be used, though. 1.4 is discouraged altogether, as several
+features of the module don't work at all in 1.4.
For small websites, using the example application, located in $SOLR/example/,
usually suffices. In any case, you can use it for developing andd testing. The
following instructions will assume you are using the example application,
otherwise you should be able to substitute the corresponding paths.
+NOTE: The Solr 4.3+ example application is currently not completely supported
+with the configuration files included in this module, due to a slight change in
+directory structure. To fix this, simply copy, move or symlink the contrib/
+directory from the top level of the extracted Solr package one level down to
+example/.
+(For other directory structures: the contrib/ directory has to be in the
+directory two levels up from the one which includes the conf/ directory. For
+help, just start the Solr server and check the log files for WARN messages –
+they should state in which place Solr expects the directory to be.)
+
+CAUTION! For production sites, it is vital that you somehow prevent outside
+access to the Solr server. Otherwise, attackers could read, corrupt or delete
+all your indexed data. Using the example server WON'T prevent this by default.
+If it is available, the probably easiest way of preventing this is to disable
+outside access to the ports used by Solr through your server's network
+configuration or through the use of a firewall.
+Other options include adding basic HTTP authentication or renaming the solr/
+directory to a random string of characters and using that as the path.
+
Before starting the Solr server you will have to make sure it uses the proper
configuration files. These are located in the solr-conf/ directory in this
module, in a sub-directory according to the Solr version you are using. Copy all
the files from that directory into Solr's configuration directory
-($SOLR/example/solr/conf/ in case of the example application), after backing up
-all files that would be overwritten.
+($SOLR/example/solr/collection1/conf/ in case of the 4.x example application),
+after backing up all files that would be overwritten.
+
+NOTE: The mapping-ISOLatin1Accent.txt is only included in the module for
+completeness' sake, as it is required to start the Solr server. It will be
+usually advisable to just use the file of the example application in this case,
+though, as it contains really useful definitions, while the file provided with
+this module is empty, apart from some documentation. For licensing reasons, it
+is not possible for us to include the definitions in the example config file in
+the copy this module provides.
+
You can then start Solr. For the example application, go to $SOLR/example/ and
issue the following command (assuming Java is correctly installed):
-java -jar start.jar
+java -jar start.jar &
-Afterwards, go to [5] in your web browser to ensure Solr is running correctly.
+Afterwards, go to [4] in your web browser to ensure Solr is running correctly.
-[5] http://localhost:8983/solr/admin/
+[4] http://localhost:8983/solr/#/
You can then enable this module and create a new server, using the "Solr search"
service class. Enter the hostname, port and path corresponding to your Solr
diff --git a/README.txt b/README.txt
index 25fbf82d..192bdad8 100644
--- a/README.txt
+++ b/README.txt
@@ -5,6 +5,10 @@ This module provides an implementation of the Search API which uses an Apache
Solr search server for indexing and searching. Before enabling or using this
module, you'll have to follow the instructions given in INSTALL.txt first.
+For more detailed documentation, see the handbook [1].
+
+[1] https://drupal.org/node/1999280
+
Supported optional features
---------------------------
@@ -15,13 +19,13 @@ can be changed arbitrarily. Using your own Solr extensions is thereby also
possible.
The "direct" parse mode for queries will result in the keys being directly used
-as the query to Solr. For details about Lucene's query syntax, see [1]. There
-are also some Solr additions to this, listed at [2]. Note however that, by
+as the query to Solr. For details about Lucene's query syntax, see [2]. There
+are also some Solr additions to this, listed at [3]. Note however that, by
default, this module uses the dismax query handler, so searches like
"field:value" won't work with the "direct" mode.
-[1] http://lucene.apache.org/java/2_9_1/queryparsersyntax.html
-[2] http://wiki.apache.org/solr/SolrQuerySyntax
+[2] http://lucene.apache.org/java/2_9_1/queryparsersyntax.html
+[3] http://wiki.apache.org/solr/SolrQuerySyntax
Regarding third-party features, the following are supported:
@@ -40,6 +44,10 @@ Regarding third-party features, the following are supported:
Introduced by module: search_api_views
Lets you display items that are similar to a given one. Use, e.g., to create
a "More like this" block for node pages.
+ NOTE: Due to a regression in Solr itself, "More like this" doesn't work with
+ integer and float fields in Solr 4. As a work-around, you can index the fields
+ (or copies of them) as string values. See [4] for details.
+ Also, MLT with date fields isn't currently supported at all for any version.
- search_api_multi
Introduced by module: search_api_multi
Allows you to search multiple indexes at once, as long as they are on the same
@@ -48,12 +56,24 @@ Regarding third-party features, the following are supported:
- search_api_spellcheck
Introduced by module: search_api_spellcheck
Gives the option to display automatic spellchecking for searches.
+- search_api_data_type_location
+ Introduced by module: search_api_location
+ Lets you index, filter and sort on location fields. Note, however, that only
+ single-valued fields are currently supported for Solr 3.x, and that the option
+ isn't supported at all in Solr 1.4.
+- search_api_grouping
+ Introduced by module: search_api_grouping [5]
+ Lets you group search results based on indexed fields. For further information
+ see the FieldCollapsing documentation in the solr wiki [6].
If you feel some service option is missing, or have other ideas for improving
this implementation, please file a feature request in the project's issue queue,
-at [3].
+at [7].
-[3] http://drupal.org/project/issues/search_api_solr
+[4] https://drupal.org/node/2004596
+[5] https://drupal.org/sandbox/daspeter/1783280
+[6] http://wiki.apache.org/solr/FieldCollapsing
+[7] https://drupal.org/project/issues/search_api_solr
Specifics
---------
@@ -62,7 +82,9 @@ Please consider that, since Solr handles tokenizing, stemming and other
preprocessing tasks, activating any preprocessors in a search index' settings is
usually not needed or even cumbersome. If you are adding an index to a Solr
server you should therefore then disable all processors which handle such
-classic preprocessing tasks.
+classic preprocessing tasks. Enabling the HTML filter can be useful, though, as
+the default config files included in this module don't handle stripping out HTML
+tags.
Also, due to the way Solr works, using a single field for fulltext searching
will result in the smallest index size and best search performance, as well as
@@ -71,6 +93,19 @@ different sets of fields in different searches on an index, it is adviced that
you collect all fields that should be searchable into a single field using the
“Aggregated fields” data alteration.
+Clean field identifiers:
+ If your Solr server was created in a module version prior to 1.2, you will get
+ the option to switch the server to "Clean field identifiers" (which is default
+ for all new servers). This will change the Solr field names used for all
+ fields whose Search API identifiers contain a colon (i.e., all nested fields)
+ to support some advanced functionality, like sorting by distance, for which
+ Solr is buggy when using field names with colons.
+ The only downside of this change is that the data in Solr for these fields
+ will become invalid, so all indexes on the server which contain such fields
+ will be scheduled for re-indexing. (If you don't want to search on incomplete
+ data until the re-indexing is finished, you can additionally manually clear
+ the indexes, on their Status tabs, to prevent this.)
+
Hidden variables
----------------
@@ -86,11 +121,11 @@ The schema.xml and solrconfig.xml files contain extensive comments on how to
add additional features or modify behaviour, e.g., for adding a language-
specific stemmer or a stopword list.
If you are interested in further customizing your Solr server to your needs,
-see the Solr wiki at [4] for documentation. When editing the schema.xml and
+see the Solr wiki at [8] for documentation. When editing the schema.xml and
solrconfig.xml files, please only edit the copies in the Solr configuration
directory, not directly the ones provided with this module.
-[4] http://wiki.apache.org/solr/
+[8] http://wiki.apache.org/solr/
You'll have to restart your Solr server after making such changes, for them to
take effect.
diff --git a/SolrPhpClient/Apache/Solr/Document.php b/SolrPhpClient/Apache/Solr/Document.php
deleted file mode 100644
index 7b9784a7..00000000
--- a/SolrPhpClient/Apache/Solr/Document.php
+++ /dev/null
@@ -1,367 +0,0 @@
-
- */
-
-/**
- * Holds Key / Value pairs that represent a Solr Document along with any associated boost
- * values. Field values can be accessed by direct dereferencing such as:
- *
- * ...
- * $document->title = 'Something';
- * echo $document->title;
- * ...
- *
- *
- * Additionally, the field values can be iterated with foreach
- *
- *
- * foreach ($document as $fieldName => $fieldValue)
- * {
- * ...
- * }
- *
- */
-class Apache_Solr_Document implements IteratorAggregate
-{
- /**
- * SVN Revision meta data for this class
- */
- const SVN_REVISION = '$Revision: 54 $';
-
- /**
- * SVN ID meta data for this class
- */
- const SVN_ID = '$Id: Document.php 54 2011-02-04 16:29:18Z donovan.jimenez $';
-
- /**
- * Document boost value
- *
- * @var float
- */
- protected $_documentBoost = false;
-
- /**
- * Document field values, indexed by name
- *
- * @var array
- */
- protected $_fields = array();
-
- /**
- * Document field boost values, indexed by name
- *
- * @var array array of floats
- */
- protected $_fieldBoosts = array();
-
- /**
- * Clear all boosts and fields from this document
- */
- public function clear()
- {
- $this->_documentBoost = false;
-
- $this->_fields = array();
- $this->_fieldBoosts = array();
- }
-
- /**
- * Get current document boost
- *
- * @return mixed will be false for default, or else a float
- */
- public function getBoost()
- {
- return $this->_documentBoost;
- }
-
- /**
- * Set document boost factor
- *
- * @param mixed $boost Use false for default boost, else cast to float that should be > 0 or will be treated as false
- */
- public function setBoost($boost)
- {
- $boost = (float) $boost;
-
- if ($boost > 0.0)
- {
- $this->_documentBoost = $boost;
- }
- else
- {
- $this->_documentBoost = false;
- }
- }
-
- /**
- * Add a value to a multi-valued field
- *
- * NOTE: the solr XML format allows you to specify boosts
- * PER value even though the underlying Lucene implementation
- * only allows a boost per field. To remedy this, the final
- * field boost value will be the product of all specified boosts
- * on field values - this is similar to SolrJ's functionality.
- *
- *
- * $doc = new Apache_Solr_Document();
- *
- * $doc->addField('foo', 'bar', 2.0);
- * $doc->addField('foo', 'baz', 3.0);
- *
- * // resultant field boost will be 6!
- * echo $doc->getFieldBoost('foo');
- *
- *
- * @param string $key
- * @param mixed $value
- * @param mixed $boost Use false for default boost, else cast to float that should be > 0 or will be treated as false
- */
- public function addField($key, $value, $boost = false)
- {
- if (!isset($this->_fields[$key]))
- {
- // create holding array if this is the first value
- $this->_fields[$key] = array();
- }
- else if (!is_array($this->_fields[$key]))
- {
- // move existing value into array if it is not already an array
- $this->_fields[$key] = array($this->_fields[$key]);
- }
-
- if ($this->getFieldBoost($key) === false)
- {
- // boost not already set, set it now
- $this->setFieldBoost($key, $boost);
- }
- else if ((float) $boost > 0.0)
- {
- // multiply passed boost with current field boost - similar to SolrJ implementation
- $this->_fieldBoosts[$key] *= (float) $boost;
- }
-
- // add value to array
- $this->_fields[$key][] = $value;
- }
-
- /**
- * Handle the array manipulation for a multi-valued field
- *
- * @param string $key
- * @param string $value
- * @param mixed $boost Use false for default boost, else cast to float that should be > 0 or will be treated as false
- *
- * @deprecated Use addField(...) instead
- */
- public function setMultiValue($key, $value, $boost = false)
- {
- $this->addField($key, $value, $boost);
- }
-
- /**
- * Get field information
- *
- * @param string $key
- * @return mixed associative array of info if field exists, false otherwise
- */
- public function getField($key)
- {
- if (isset($this->_fields[$key]))
- {
- return array(
- 'name' => $key,
- 'value' => $this->_fields[$key],
- 'boost' => $this->getFieldBoost($key)
- );
- }
-
- return false;
- }
-
- /**
- * Set a field value. Multi-valued fields should be set as arrays
- * or instead use the addField(...) function which will automatically
- * make sure the field is an array.
- *
- * @param string $key
- * @param mixed $value
- * @param mixed $boost Use false for default boost, else cast to float that should be > 0 or will be treated as false
- */
- public function setField($key, $value, $boost = false)
- {
- $this->_fields[$key] = $value;
- $this->setFieldBoost($key, $boost);
- }
-
- /**
- * Get the currently set field boost for a document field
- *
- * @param string $key
- * @return float currently set field boost, false if one is not set
- */
- public function getFieldBoost($key)
- {
- return isset($this->_fieldBoosts[$key]) ? $this->_fieldBoosts[$key] : false;
- }
-
- /**
- * Set the field boost for a document field
- *
- * @param string $key field name for the boost
- * @param mixed $boost Use false for default boost, else cast to float that should be > 0 or will be treated as false
- */
- public function setFieldBoost($key, $boost)
- {
- $boost = (float) $boost;
-
- if ($boost > 0.0)
- {
- $this->_fieldBoosts[$key] = $boost;
- }
- else
- {
- $this->_fieldBoosts[$key] = false;
- }
- }
-
- /**
- * Return current field boosts, indexed by field name
- *
- * @return array
- */
- public function getFieldBoosts()
- {
- return $this->_fieldBoosts;
- }
-
- /**
- * Get the names of all fields in this document
- *
- * @return array
- */
- public function getFieldNames()
- {
- return array_keys($this->_fields);
- }
-
- /**
- * Get the values of all fields in this document
- *
- * @return array
- */
- public function getFieldValues()
- {
- return array_values($this->_fields);
- }
-
- /**
- * IteratorAggregate implementation function. Allows usage:
- *
- *
- * foreach ($document as $key => $value)
- * {
- * ...
- * }
- *
- */
- public function getIterator()
- {
- $arrayObject = new ArrayObject($this->_fields);
-
- return $arrayObject->getIterator();
- }
-
- /**
- * Magic get for field values
- *
- * @param string $key
- * @return mixed
- */
- public function __get($key)
- {
- if (isset($this->_fields[$key]))
- {
- return $this->_fields[$key];
- }
-
- return null;
- }
-
- /**
- * Magic set for field values. Multi-valued fields should be set as arrays
- * or instead use the addField(...) function which will automatically
- * make sure the field is an array.
- *
- * @param string $key
- * @param mixed $value
- */
- public function __set($key, $value)
- {
- $this->setField($key, $value);
- }
-
- /**
- * Magic isset for fields values. Do not call directly. Allows usage:
- *
- *
- * isset($document->some_field);
- *
- *
- * @param string $key
- * @return boolean
- */
- public function __isset($key)
- {
- return isset($this->_fields[$key]);
- }
-
- /**
- * Magic unset for field values. Do not call directly. Allows usage:
- *
- *
- * unset($document->some_field);
- *
- *
- * @param string $key
- */
- public function __unset($key)
- {
- unset($this->_fields[$key]);
- unset($this->_fieldBoosts[$key]);
- }
-}
\ No newline at end of file
diff --git a/SolrPhpClient/Apache/Solr/Exception.php b/SolrPhpClient/Apache/Solr/Exception.php
deleted file mode 100644
index e6bc4f4b..00000000
--- a/SolrPhpClient/Apache/Solr/Exception.php
+++ /dev/null
@@ -1,50 +0,0 @@
-
- */
-
-class Apache_Solr_Exception extends Exception
-{
- /**
- * SVN Revision meta data for this class
- */
- const SVN_REVISION = '$Revision: 54 $';
-
- /**
- * SVN ID meta data for this class
- */
- const SVN_ID = '$Id: Exception.php 54 2011-02-04 16:29:18Z donovan.jimenez $';
-}
\ No newline at end of file
diff --git a/SolrPhpClient/Apache/Solr/HttpTransport/Abstract.php b/SolrPhpClient/Apache/Solr/HttpTransport/Abstract.php
deleted file mode 100644
index cf9f76d3..00000000
--- a/SolrPhpClient/Apache/Solr/HttpTransport/Abstract.php
+++ /dev/null
@@ -1,89 +0,0 @@
-, Donovan Jimenez
- */
-
-/**
- * Convenience class that implements the transport implementation. Can be extended by
- * real implementations to do some of the common book keeping
- */
-abstract class Apache_Solr_HttpTransport_Abstract implements Apache_Solr_HttpTransport_Interface
-{
- /**
- * Our default timeout value for requests that don't specify a timeout
- *
- * @var float
- */
- private $_defaultTimeout = false;
-
- /**
- * Get the current default timeout setting (initially the default_socket_timeout ini setting)
- * in seconds
- *
- * @return float
- */
- public function getDefaultTimeout()
- {
- // lazy load the default timeout from the ini settings
- if ($this->_defaultTimeout === false)
- {
- $this->_defaultTimeout = (int) ini_get('default_socket_timeout');
-
- // double check we didn't get 0 for a timeout
- if ($this->_defaultTimeout <= 0)
- {
- $this->_defaultTimeout = 60;
- }
- }
-
- return $this->_defaultTimeout;
- }
-
- /**
- * Set the current default timeout for all HTTP requests
- *
- * @param float $timeout
- */
- public function setDefaultTimeout($timeout)
- {
- $timeout = (float) $timeout;
-
- if ($timeout >= 0)
- {
- $this->_defaultTimeout = $timeout;
- }
- }
-}
\ No newline at end of file
diff --git a/SolrPhpClient/Apache/Solr/HttpTransport/Curl.php b/SolrPhpClient/Apache/Solr/HttpTransport/Curl.php
deleted file mode 100644
index 7cb7743e..00000000
--- a/SolrPhpClient/Apache/Solr/HttpTransport/Curl.php
+++ /dev/null
@@ -1,198 +0,0 @@
-, Donovan Jimenez
- */
-
-// Require Apache_Solr_HttpTransport_Abstract
-require_once(dirname(__FILE__) . '/Abstract.php');
-
-/**
- * A Curl based HTTP transport. Uses a single curl session for all requests.
- */
-class Apache_Solr_HttpTransport_Curl extends Apache_Solr_HttpTransport_Abstract
-{
- /**
- * SVN Revision meta data for this class
- */
- const SVN_REVISION = '$Revision:$';
-
- /**
- * SVN ID meta data for this class
- */
- const SVN_ID = '$Id:$';
-
- /**
- * Curl Session Handle
- *
- * @var resource
- */
- private $_curl;
-
- /**
- * Initializes a curl session
- */
- public function __construct()
- {
- // initialize a CURL session
- $this->_curl = curl_init();
-
- // set common options that will not be changed during the session
- curl_setopt_array($this->_curl, array(
- // return the response body from curl_exec
- CURLOPT_RETURNTRANSFER => true,
-
- // get the output as binary data
- CURLOPT_BINARYTRANSFER => true,
-
- // we do not need the headers in the output, we get everything we need from curl_getinfo
- CURLOPT_HEADER => false
- ));
- }
-
- /**
- * Closes a curl session
- */
- function __destruct()
- {
- // close our curl session
- curl_close($this->_curl);
- }
-
- public function performGetRequest($url, $timeout = false)
- {
- // check the timeout value
- if ($timeout === false || $timeout <= 0.0)
- {
- // use the default timeout
- $timeout = $this->getDefaultTimeout();
- }
-
- // set curl GET options
- curl_setopt_array($this->_curl, array(
- // make sure we're returning the body
- CURLOPT_NOBODY => false,
-
- // make sure we're GET
- CURLOPT_HTTPGET => true,
-
- // set the URL
- CURLOPT_URL => $url,
-
- // set the timeout
- CURLOPT_TIMEOUT => $timeout
- ));
-
- // make the request
- $responseBody = curl_exec($this->_curl);
-
- // get info from the transfer
- $statusCode = curl_getinfo($this->_curl, CURLINFO_HTTP_CODE);
- $contentType = curl_getinfo($this->_curl, CURLINFO_CONTENT_TYPE);
-
- return new Apache_Solr_HttpTransport_Response($statusCode, $contentType, $responseBody);
- }
-
- public function performHeadRequest($url, $timeout = false)
- {
- // check the timeout value
- if ($timeout === false || $timeout <= 0.0)
- {
- // use the default timeout
- $timeout = $this->getDefaultTimeout();
- }
-
- // set curl HEAD options
- curl_setopt_array($this->_curl, array(
- // this both sets the method to HEAD and says not to return a body
- CURLOPT_NOBODY => true,
-
- // set the URL
- CURLOPT_URL => $url,
-
- // set the timeout
- CURLOPT_TIMEOUT => $timeout
- ));
-
- // make the request
- $responseBody = curl_exec($this->_curl);
-
- // get info from the transfer
- $statusCode = curl_getinfo($this->_curl, CURLINFO_HTTP_CODE);
- $contentType = curl_getinfo($this->_curl, CURLINFO_CONTENT_TYPE);
-
- return new Apache_Solr_HttpTransport_Response($statusCode, $contentType, $responseBody);
- }
-
- public function performPostRequest($url, $postData, $contentType, $timeout = false)
- {
- // check the timeout value
- if ($timeout === false || $timeout <= 0.0)
- {
- // use the default timeout
- $timeout = $this->getDefaultTimeout();
- }
-
- // set curl POST options
- curl_setopt_array($this->_curl, array(
- // make sure we're returning the body
- CURLOPT_NOBODY => false,
-
- // make sure we're POST
- CURLOPT_POST => true,
-
- // set the URL
- CURLOPT_URL => $url,
-
- // set the post data
- CURLOPT_POSTFIELDS => $postData,
-
- // set the content type
- CURLOPT_HTTPHEADER => array("Content-Type: {$contentType}"),
-
- // set the timeout
- CURLOPT_TIMEOUT => $timeout
- ));
-
- // make the request
- $responseBody = curl_exec($this->_curl);
-
- // get info from the transfer
- $statusCode = curl_getinfo($this->_curl, CURLINFO_HTTP_CODE);
- $contentType = curl_getinfo($this->_curl, CURLINFO_CONTENT_TYPE);
-
- return new Apache_Solr_HttpTransport_Response($statusCode, $contentType, $responseBody);
- }
-}
\ No newline at end of file
diff --git a/SolrPhpClient/Apache/Solr/HttpTransport/CurlNoReuse.php b/SolrPhpClient/Apache/Solr/HttpTransport/CurlNoReuse.php
deleted file mode 100644
index 14549588..00000000
--- a/SolrPhpClient/Apache/Solr/HttpTransport/CurlNoReuse.php
+++ /dev/null
@@ -1,196 +0,0 @@
-, Donovan Jimenez
- */
-
-// Require Apache_Solr_HttpTransport_Abstract
-require_once(dirname(__FILE__) . '/Abstract.php');
-
-/**
- * An alternative Curl HTTP transport that opens and closes a curl session for
- * every request. This isn't the recommended way to use curl, but some version of
- * PHP have memory issues.
- */
-class Apache_Solr_HttpTransport_CurlNoReuse extends Apache_Solr_HttpTransport_Abstract
-{
- /**
- * SVN Revision meta data for this class
- */
- const SVN_REVISION = '$Revision:$';
-
- /**
- * SVN ID meta data for this class
- */
- const SVN_ID = '$Id:$';
-
- public function performGetRequest($url, $timeout = false)
- {
- // check the timeout value
- if ($timeout === false || $timeout <= 0.0)
- {
- // use the default timeout
- $timeout = $this->getDefaultTimeout();
- }
-
- $curl = curl_init();
-
- // set curl GET options
- curl_setopt_array($curl, array(
- // return the response body from curl_exec
- CURLOPT_RETURNTRANSFER => true,
-
- // get the output as binary data
- CURLOPT_BINARYTRANSFER => true,
-
- // we do not need the headers in the output, we get everything we need from curl_getinfo
- CURLOPT_HEADER => false,
-
- // set the URL
- CURLOPT_URL => $url,
-
- // set the timeout
- CURLOPT_TIMEOUT => $timeout
- ));
-
- // make the request
- $responseBody = curl_exec($curl);
-
- // get info from the transfer
- $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
- $contentType = curl_getinfo($curl, CURLINFO_CONTENT_TYPE);
-
- // close our curl session - we're done with it
- curl_close($curl);
-
- return new Apache_Solr_HttpTransport_Response($statusCode, $contentType, $responseBody);
- }
-
- public function performHeadRequest($url, $timeout = false)
- {
- // check the timeout value
- if ($timeout === false || $timeout <= 0.0)
- {
- // use the default timeout
- $timeout = $this->getDefaultTimeout();
- }
-
- $curl = curl_init();
-
- // set curl HEAD options
- curl_setopt_array($curl, array(
- // return the response body from curl_exec
- CURLOPT_RETURNTRANSFER => true,
-
- // get the output as binary data
- CURLOPT_BINARYTRANSFER => true,
-
- // we do not need the headers in the output, we get everything we need from curl_getinfo
- CURLOPT_HEADER => false,
-
- // this both sets the method to HEAD and says not to return a body
- CURLOPT_NOBODY => true,
-
- // set the URL
- CURLOPT_URL => $url,
-
- // set the timeout
- CURLOPT_TIMEOUT => $timeout
- ));
-
- // make the request
- $responseBody = curl_exec($curl);
-
- // get info from the transfer
- $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
- $contentType = curl_getinfo($curl, CURLINFO_CONTENT_TYPE);
-
- // close our curl session - we're done with it
- curl_close($curl);
-
- return new Apache_Solr_HttpTransport_Response($statusCode, $contentType, $responseBody);
- }
-
- public function performPostRequest($url, $postData, $contentType, $timeout = false)
- {
- // check the timeout value
- if ($timeout === false || $timeout <= 0.0)
- {
- // use the default timeout
- $timeout = $this->getDefaultTimeout();
- }
-
- $curl = curl_init();
-
- // set curl POST options
- curl_setopt_array($curl, array(
- // return the response body from curl_exec
- CURLOPT_RETURNTRANSFER => true,
-
- // get the output as binary data
- CURLOPT_BINARYTRANSFER => true,
-
- // we do not need the headers in the output, we get everything we need from curl_getinfo
- CURLOPT_HEADER => false,
-
- // make sure we're POST
- CURLOPT_POST => true,
-
- // set the URL
- CURLOPT_URL => $url,
-
- // set the post data
- CURLOPT_POSTFIELDS => $postData,
-
- // set the content type
- CURLOPT_HTTPHEADER => array("Content-Type: {$contentType}"),
-
- // set the timeout
- CURLOPT_TIMEOUT => $timeout
- ));
-
- // make the request
- $responseBody = curl_exec($curl);
-
- // get info from the transfer
- $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
- $contentType = curl_getinfo($curl, CURLINFO_CONTENT_TYPE);
-
- // close our curl session - we're done with it
- curl_close($curl);
-
- return new Apache_Solr_HttpTransport_Response($statusCode, $contentType, $responseBody);
- }
-}
\ No newline at end of file
diff --git a/SolrPhpClient/Apache/Solr/HttpTransport/FileGetContents.php b/SolrPhpClient/Apache/Solr/HttpTransport/FileGetContents.php
deleted file mode 100644
index 5e01775c..00000000
--- a/SolrPhpClient/Apache/Solr/HttpTransport/FileGetContents.php
+++ /dev/null
@@ -1,216 +0,0 @@
-
- */
-
-// Require Apache_Solr_HttpTransport_Abstract
-require_once(dirname(__FILE__) . '/Abstract.php');
-
-/**
- * HTTP Transport implemenation that uses the builtin http URL wrappers and file_get_contents
- */
-class Apache_Solr_HttpTransport_FileGetContents extends Apache_Solr_HttpTransport_Abstract
-{
- /**
- * SVN Revision meta data for this class
- */
- const SVN_REVISION = '$Revision: $';
-
- /**
- * SVN ID meta data for this class
- */
- const SVN_ID = '$Id: $';
-
- /**
- * Reusable stream context resources for GET and POST operations
- *
- * @var resource
- */
- private $_getContext, $_headContext, $_postContext;
-
- /**
- * Initializes our reuseable get and post stream contexts
- */
- public function __construct()
- {
- $this->_getContext = stream_context_create();
- $this->_headContext = stream_context_create();
- $this->_postContext = stream_context_create();
- }
-
- public function performGetRequest($url, $timeout = false)
- {
- // set the timeout if specified
- if ($timeout !== FALSE && $timeout > 0.0)
- {
- // timeouts with file_get_contents seem to need
- // to be halved to work as expected
- $timeout = (float) $timeout / 2;
-
- stream_context_set_option($this->_getContext, 'http', 'timeout', $timeout);
- }
- else
- {
- // use the default timeout pulled from default_socket_timeout otherwise
- stream_context_set_option($this->_getContext, 'http', 'timeout', $this->getDefaultTimeout());
- }
-
- // $http_response_headers will be updated by the call to file_get_contents later
- // see http://us.php.net/manual/en/wrappers.http.php for documentation
- // Unfortunately, it will still create a notice in analyzers if we don't set it here
- $http_response_header = null;
- $responseBody = @file_get_contents($url, false, $this->_getContext);
-
- return $this->_getResponseFromParts($responseBody, $http_response_header);
- }
-
- public function performHeadRequest($url, $timeout = false)
- {
- stream_context_set_option($this->_headContext, array(
- 'http' => array(
- // set HTTP method
- 'method' => 'HEAD',
-
- // default timeout
- 'timeout' => $this->getDefaultTimeout()
- )
- )
- );
-
- // set the timeout if specified
- if ($timeout !== FALSE && $timeout > 0.0)
- {
- // timeouts with file_get_contents seem to need
- // to be halved to work as expected
- $timeout = (float) $timeout / 2;
-
- stream_context_set_option($this->_headContext, 'http', 'timeout', $timeout);
- }
-
- // $http_response_headers will be updated by the call to file_get_contents later
- // see http://us.php.net/manual/en/wrappers.http.php for documentation
- // Unfortunately, it will still create a notice in analyzers if we don't set it here
- $http_response_header = null;
- $responseBody = @file_get_contents($url, false, $this->_headContext);
-
- return $this->_getResponseFromParts($responseBody, $http_response_header);
- }
-
- public function performPostRequest($url, $rawPost, $contentType, $timeout = false)
- {
- stream_context_set_option($this->_postContext, array(
- 'http' => array(
- // set HTTP method
- 'method' => 'POST',
-
- // Add our posted content type
- 'header' => "Content-Type: $contentType",
-
- // the posted content
- 'content' => $rawPost,
-
- // default timeout
- 'timeout' => $this->getDefaultTimeout()
- )
- )
- );
-
- // set the timeout if specified
- if ($timeout !== FALSE && $timeout > 0.0)
- {
- // timeouts with file_get_contents seem to need
- // to be halved to work as expected
- $timeout = (float) $timeout / 2;
-
- stream_context_set_option($this->_postContext, 'http', 'timeout', $timeout);
- }
-
- // $http_response_header will be updated by the call to file_get_contents later
- // see http://us.php.net/manual/en/wrappers.http.php for documentation
- // Unfortunately, it will still create a notice in analyzers if we don't set it here
- $http_response_header = null;
- $responseBody = @file_get_contents($url, false, $this->_postContext);
-
- // reset content of post context to reclaim memory
- stream_context_set_option($this->_postContext, 'http', 'content', '');
-
- return $this->_getResponseFromParts($responseBody, $http_response_header);
- }
-
- private function _getResponseFromParts($rawResponse, $httpHeaders)
- {
- //Assume 0, false as defaults
- $status = 0;
- $contentType = false;
-
- //iterate through headers for real status, type, and encoding
- if (is_array($httpHeaders) && count($httpHeaders) > 0)
- {
- //look at the first headers for the HTTP status code
- //and message (errors are usually returned this way)
- //
- //HTTP 100 Continue response can also be returned before
- //the REAL status header, so we need look until we find
- //the last header starting with HTTP
- //
- //the spec: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.1
- //
- //Thanks to Daniel Andersson for pointing out this oversight
- while (isset($httpHeaders[0]) && substr($httpHeaders[0], 0, 4) == 'HTTP')
- {
- // we can do a intval on status line without the "HTTP/1.X " to get the code
- $status = intval(substr($httpHeaders[0], 9));
-
- // remove this from the headers so we can check for more
- array_shift($httpHeaders);
- }
-
- //Look for the Content-Type response header and determine type
- //and encoding from it (if possible - such as 'Content-Type: text/plain; charset=UTF-8')
- foreach ($httpHeaders as $header)
- {
- // look for the header that starts appropriately
- if (strncasecmp($header, 'Content-Type:', 13) == 0)
- {
- $contentType = substr($header, 13);
- break;
- }
- }
- }
-
- return new Apache_Solr_HttpTransport_Response($status, $contentType, $rawResponse);
- }
-}
\ No newline at end of file
diff --git a/SolrPhpClient/Apache/Solr/HttpTransport/Interface.php b/SolrPhpClient/Apache/Solr/HttpTransport/Interface.php
deleted file mode 100644
index 090fc27a..00000000
--- a/SolrPhpClient/Apache/Solr/HttpTransport/Interface.php
+++ /dev/null
@@ -1,94 +0,0 @@
-, Donovan Jimenez
- */
-
-// require Apache_Solr_HttpTransport_Response
-require_once(dirname(__FILE__) . '/Response.php');
-
-/**
- * Interface that all Transport (HTTP Requester) implementations must implement. These
- * Implementations can then be plugged into the Service instance in order to user their
- * the desired method for making HTTP requests
- */
-interface Apache_Solr_HttpTransport_Interface
-{
- /**
- * Get the current default timeout for all HTTP requests
- *
- * @return float
- */
- public function getDefaultTimeout();
-
- /**
- * Set the current default timeout for all HTTP requests
- *
- * @param float $timeout
- */
- public function setDefaultTimeout($timeout);
-
- /**
- * Perform a GET HTTP operation with an optional timeout and return the response
- * contents, use getLastResponseHeaders to retrieve HTTP headers
- *
- * @param string $url
- * @param float $timeout
- * @return Apache_Solr_HttpTransport_Response HTTP response
- */
- public function performGetRequest($url, $timeout = false);
-
- /**
- * Perform a HEAD HTTP operation with an optional timeout and return the response
- * headers - NOTE: head requests have no response body
- *
- * @param string $url
- * @param float $timeout
- * @return Apache_Solr_HttpTransport_Response HTTP response
- */
- public function performHeadRequest($url, $timeout = false);
-
- /**
- * Perform a POST HTTP operation with an optional timeout and return the response
- * contents, use getLastResponseHeaders to retrieve HTTP headers
- *
- * @param string $url
- * @param string $rawPost
- * @param string $contentType
- * @param float $timeout
- * @return Apache_Solr_HttpTransport_Response HTTP response
- */
- public function performPostRequest($url, $rawPost, $contentType, $timeout = false);
-}
\ No newline at end of file
diff --git a/SolrPhpClient/Apache/Solr/HttpTransport/Response.php b/SolrPhpClient/Apache/Solr/HttpTransport/Response.php
deleted file mode 100644
index 3f113aee..00000000
--- a/SolrPhpClient/Apache/Solr/HttpTransport/Response.php
+++ /dev/null
@@ -1,255 +0,0 @@
-
- */
-
-/**
- * Represents the required pieces of an HTTP response provided by HTTP transport
- * implementations and then consumed by the Apache_Solr_Response class which provides
- * decoding
- */
-class Apache_Solr_HttpTransport_Response
-{
- /**
- * Status Messages indexed by Status Code
- * Obtained from: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
- *
- * @var array
- */
- static private $_defaultStatusMessages = array(
- // Specific to PHP Solr Client
- 0 => "Communication Error",
-
- // Informational 1XX
- 100 => "Continue",
- 101 => "Switching Protocols",
-
- // Successful 2XX
- 200 => "OK",
- 201 => "Created",
- 202 => "Accepted",
- 203 => "Non-Authoritative Information",
- 204 => "No Content",
- 205 => "Reset Content",
- 206 => "Partial Content",
-
- // Redirection 3XX
- 300 => "Multiple Choices",
- 301 => "Moved Permanently",
- 302 => "Found",
- 303 => "See Other",
- 304 => "Not Modified",
- 305 => "Use Proxy",
- 307 => "Temporary Redirect",
-
- // Client Error 4XX
- 400 => "Bad Request",
- 401 => "Unauthorized",
- 402 => "Payment Required",
- 403 => "Forbidden",
- 404 => "Not Found",
- 405 => "Method Not Allowed",
- 406 => "Not Acceptable",
- 407 => "Proxy Authentication Required",
- 408 => "Request Timeout",
- 409 => "Conflict",
- 410 => "Gone",
- 411 => "Length Required",
- 412 => "Precondition Failed",
- 413 => "Request Entity Too Large",
- 414 => "Request-URI Too Long",
- 415 => "Unsupported Media Type",
- 416 => "Request Range Not Satisfiable",
- 417 => "Expectation Failed",
-
- // Server Error 5XX
- 500 => "Internal Server Error",
- 501 => "Not Implemented",
- 502 => "Bad Gateway",
- 503 => "Service Unavailable",
- 504 => "Gateway Timeout",
- 505 => "HTTP Version Not Supported"
- );
-
- /**
- * Get the HTTP status message based on status code
- *
- * @return string
- */
- public static function getDefaultStatusMessage($statusCode)
- {
- $statusCode = (int) $statusCode;
-
- if (isset(self::$_defaultStatusMessages[$statusCode]))
- {
- return self::$_defaultStatusMessages[$statusCode];
- }
-
- return "Unknown Status";
- }
-
- /**
- * The response's HTTP status code
- *
- * @var integer
- */
- private $_statusCode;
-
- /**
- * The response's HTTP status message
- *
- * @var string
- */
- private $_statusMessage;
-
- /**
- * The response's mime type
- *
- * @var string
- */
- private $_mimeType;
-
- /**
- * The response's character encoding
- *
- * @var string
- */
- private $_encoding;
-
- /**
- * The response's data
- *
- * @var string
- */
- private $_responseBody;
-
- /**
- * Construct a HTTP transport response
- *
- * @param integer $statusCode The HTTP status code
- * @param string $contentType The VALUE of the Content-Type HTTP header
- * @param string $responseBody The body of the HTTP response
- */
- public function __construct($statusCode, $contentType, $responseBody)
- {
- // set the status code, make sure its an integer
- $this->_statusCode = (int) $statusCode;
-
- // lookup up status message based on code
- $this->_statusMessage = self::getDefaultStatusMessage($this->_statusCode);
-
- // set the response body, it should always be a string
- $this->_responseBody = (string) $responseBody;
-
- // parse the content type header value for mimetype and encoding
- // first set default values that will remain if we can't find
- // what we're looking for in the content type
- $this->_mimeType = "text/plain";
- $this->_encoding = "UTF-8";
-
- if ($contentType)
- {
- // now break apart the header to see if there's character encoding
- $contentTypeParts = explode(';', $contentType, 2);
-
- if (isset($contentTypeParts[0]))
- {
- $this->_mimeType = trim($contentTypeParts[0]);
- }
-
- if (isset($contentTypeParts[1]))
- {
- // we have a second part, split it further
- $contentTypeParts = explode('=', $contentTypeParts[1]);
-
- if (isset($contentTypeParts[1]))
- {
- $this->_encoding = trim($contentTypeParts[1]);
- }
- }
- }
- }
-
- /**
- * Get the status code of the response
- *
- * @return integer
- */
- public function getStatusCode()
- {
- return $this->_statusCode;
- }
-
- /**
- * Get the status message of the response
- *
- * @return string
- */
- public function getStatusMessage()
- {
- return $this->_statusMessage;
- }
-
- /**
- * Get the mimetype of the response body
- *
- * @return string
- */
- public function getMimeType()
- {
- return $this->_mimeType;
- }
-
- /**
- * Get the charset encoding of the response body.
- *
- * @return string
- */
- public function getEncoding()
- {
- return $this->_encoding;
- }
-
- /**
- * Get the raw response body
- *
- * @return string
- */
- public function getBody()
- {
- return $this->_responseBody;
- }
-}
diff --git a/SolrPhpClient/Apache/Solr/HttpTransportException.php b/SolrPhpClient/Apache/Solr/HttpTransportException.php
deleted file mode 100644
index 83c0001b..00000000
--- a/SolrPhpClient/Apache/Solr/HttpTransportException.php
+++ /dev/null
@@ -1,79 +0,0 @@
-
- */
-
-class Apache_Solr_HttpTransportException extends Apache_Solr_Exception
-{
- /**
- * SVN Revision meta data for this class
- */
- const SVN_REVISION = '$Revision: 54 $';
-
- /**
- * SVN ID meta data for this class
- */
- const SVN_ID = '$Id: HttpTransportException.php 54 2011-02-04 16:29:18Z donovan.jimenez $';
-
- /**
- * Response for which exception was generated
- *
- * @var Apache_Solr_Response
- */
- private $_response;
-
- /**
- * HttpTransportException Constructor
- *
- * @param Apache_Solr_Response $response
- */
- public function __construct(Apache_Solr_Response $response)
- {
- parent::__construct("'{$response->getHttpStatus()}' Status: {$response->getHttpStatusMessage()}", $response->getHttpStatus());
-
- $this->_response = $response;
- }
-
- /**
- * Get the response for which this exception was generated
- *
- * @return Apache_Solr_Response
- */
- public function getResponse()
- {
- return $this->_response;
- }
-}
\ No newline at end of file
diff --git a/SolrPhpClient/Apache/Solr/InvalidArgumentException.php b/SolrPhpClient/Apache/Solr/InvalidArgumentException.php
deleted file mode 100644
index 273f3d06..00000000
--- a/SolrPhpClient/Apache/Solr/InvalidArgumentException.php
+++ /dev/null
@@ -1,50 +0,0 @@
-
- */
-
-class Apache_Solr_InvalidArgumentException extends Apache_Solr_Exception
-{
- /**
- * SVN Revision meta data for this class
- */
- const SVN_REVISION = '$Revision: 54 $';
-
- /**
- * SVN ID meta data for this class
- */
- const SVN_ID = '$Id: InvalidArgumentException.php 54 2011-02-04 16:29:18Z donovan.jimenez $';
-}
\ No newline at end of file
diff --git a/SolrPhpClient/Apache/Solr/NoServiceAvailableException.php b/SolrPhpClient/Apache/Solr/NoServiceAvailableException.php
deleted file mode 100644
index eead7320..00000000
--- a/SolrPhpClient/Apache/Solr/NoServiceAvailableException.php
+++ /dev/null
@@ -1,50 +0,0 @@
-
- */
-
-class Apache_Solr_NoServiceAvailableException extends Apache_Solr_Exception
-{
- /**
- * SVN Revision meta data for this class
- */
- const SVN_REVISION = '$Revision: 54 $';
-
- /**
- * SVN ID meta data for this class
- */
- const SVN_ID = '$Id: NoServiceAvailableException.php 54 2011-02-04 16:29:18Z donovan.jimenez $';
-}
\ No newline at end of file
diff --git a/SolrPhpClient/Apache/Solr/ParserException.php b/SolrPhpClient/Apache/Solr/ParserException.php
deleted file mode 100644
index 29283dbc..00000000
--- a/SolrPhpClient/Apache/Solr/ParserException.php
+++ /dev/null
@@ -1,50 +0,0 @@
-
- */
-
-class Apache_Solr_ParserException extends Apache_Solr_Exception
-{
- /**
- * SVN Revision meta data for this class
- */
- const SVN_REVISION = '$Revision: 54 $';
-
- /**
- * SVN ID meta data for this class
- */
- const SVN_ID = '$Id: ParserException.php 54 2011-02-04 16:29:18Z donovan.jimenez $';
-}
\ No newline at end of file
diff --git a/SolrPhpClient/Apache/Solr/Response.php b/SolrPhpClient/Apache/Solr/Response.php
deleted file mode 100644
index 1a35e568..00000000
--- a/SolrPhpClient/Apache/Solr/Response.php
+++ /dev/null
@@ -1,247 +0,0 @@
-
- */
-
-require_once(dirname(__FILE__) . '/ParserException.php');
-
-/**
- * Represents a Solr response. Parses the raw response into a set of stdClass objects
- * and associative arrays for easy access.
- *
- * Currently requires json_decode which is bundled with PHP >= 5.2.0, Alternatively can be
- * installed with PECL. Zend Framework also includes a purely PHP solution.
- */
-class Apache_Solr_Response
-{
- /**
- * SVN Revision meta data for this class
- */
- const SVN_REVISION = '$Revision: 54 $';
-
- /**
- * SVN ID meta data for this class
- */
- const SVN_ID = '$Id: Response.php 54 2011-02-04 16:29:18Z donovan.jimenez $';
-
- /**
- * Holds the raw response used in construction
- *
- * @var Apache_Solr_HttpTransport_Response HTTP response
- */
- protected $_response;
-
- /**
- * Whether the raw response has been parsed
- *
- * @var boolean
- */
- protected $_isParsed = false;
-
- /**
- * Parsed representation of the data
- *
- * @var mixed
- */
- protected $_parsedData;
-
- /**
- * Data parsing flags. Determines what extra processing should be done
- * after the data is initially converted to a data structure.
- *
- * @var boolean
- */
- protected $_createDocuments = true,
- $_collapseSingleValueArrays = true;
-
- /**
- * Constructor. Takes the raw HTTP response body and the exploded HTTP headers
- *
- * @return Apache_Solr_HttpTransport_Response HTTP response
- * @param boolean $createDocuments Whether to convert the documents json_decoded as stdClass instances to Apache_Solr_Document instances
- * @param boolean $collapseSingleValueArrays Whether to make multivalued fields appear as single values
- */
- public function __construct(Apache_Solr_HttpTransport_Response $response, $createDocuments = true, $collapseSingleValueArrays = true)
- {
- $this->_response = $response;
- $this->_createDocuments = (bool) $createDocuments;
- $this->_collapseSingleValueArrays = (bool) $collapseSingleValueArrays;
- }
-
- /**
- * Get the HTTP status code
- *
- * @return integer
- */
- public function getHttpStatus()
- {
- return $this->_response->getStatusCode();
- }
-
- /**
- * Get the HTTP status message of the response
- *
- * @return string
- */
- public function getHttpStatusMessage()
- {
- return $this->_response->getStatusMessage();
- }
-
- /**
- * Get content type of this Solr response
- *
- * @return string
- */
- public function getType()
- {
- return $this->_response->getMimeType();
- }
-
- /**
- * Get character encoding of this response. Should usually be utf-8, but just in case
- *
- * @return string
- */
- public function getEncoding()
- {
- return $this->_response->getEncoding();
- }
-
- /**
- * Get the raw response as it was given to this object
- *
- * @return string
- */
- public function getRawResponse()
- {
- return $this->_response->getBody();
- }
-
- /**
- * Magic get to expose the parsed data and to lazily load it
- *
- * @param string $key
- * @return mixed
- */
- public function __get($key)
- {
- if (!$this->_isParsed)
- {
- $this->_parseData();
- $this->_isParsed = true;
- }
-
- if (isset($this->_parsedData->$key))
- {
- return $this->_parsedData->$key;
- }
-
- return null;
- }
-
- /**
- * Magic function for isset function on parsed data
- *
- * @param string $key
- * @return boolean
- */
- public function __isset($key)
- {
- if (!$this->_isParsed)
- {
- $this->_parseData();
- $this->_isParsed = true;
- }
-
- return isset($this->_parsedData->$key);
- }
-
- /**
- * Parse the raw response into the parsed_data array for access
- *
- * @throws Apache_Solr_ParserException If the data could not be parsed
- */
- protected function _parseData()
- {
- //An alternative would be to use Zend_Json::decode(...)
- $data = json_decode($this->_response->getBody());
-
- // check that we receive a valid JSON response - we should never receive a null
- if ($data === null)
- {
- throw new Apache_Solr_ParserException('Solr response does not appear to be valid JSON, please examine the raw response with getRawResponse() method');
- }
-
- //if we're configured to collapse single valued arrays or to convert them to Apache_Solr_Document objects
- //and we have response documents, then try to collapse the values and / or convert them now
- if (($this->_createDocuments || $this->_collapseSingleValueArrays) && isset($data->response) && is_array($data->response->docs))
- {
- $documents = array();
-
- foreach ($data->response->docs as $originalDocument)
- {
- if ($this->_createDocuments)
- {
- $document = new Apache_Solr_Document();
- }
- else
- {
- $document = $originalDocument;
- }
-
- foreach ($originalDocument as $key => $value)
- {
- //If a result is an array with only a single
- //value then its nice to be able to access
- //it as if it were always a single value
- if ($this->_collapseSingleValueArrays && is_array($value) && count($value) <= 1)
- {
- $value = array_shift($value);
- }
-
- $document->$key = $value;
- }
-
- $documents[] = $document;
- }
-
- $data->response->docs = $documents;
- }
-
- $this->_parsedData = $data;
- }
-}
\ No newline at end of file
diff --git a/SolrPhpClient/Apache/Solr/Service.php b/SolrPhpClient/Apache/Solr/Service.php
deleted file mode 100644
index ea9ae376..00000000
--- a/SolrPhpClient/Apache/Solr/Service.php
+++ /dev/null
@@ -1,1181 +0,0 @@
-
- */
-
-// See Issue #1 (http://code.google.com/p/solr-php-client/issues/detail?id=1)
-// Doesn't follow typical include path conventions, but is more convenient for users
-require_once(dirname(__FILE__) . '/Exception.php');
-require_once(dirname(__FILE__) . '/HttpTransportException.php');
-require_once(dirname(__FILE__) . '/InvalidArgumentException.php');
-
-require_once(dirname(__FILE__) . '/Document.php');
-require_once(dirname(__FILE__) . '/Response.php');
-
-require_once(dirname(__FILE__) . '/HttpTransport/Interface.php');
-
-/**
- * Starting point for the Solr API. Represents a Solr server resource and has
- * methods for pinging, adding, deleting, committing, optimizing and searching.
- *
- * Example Usage:
- *
- * ...
- * $solr = new Apache_Solr_Service(); //or explicitly new Apache_Solr_Service('localhost', 8180, '/solr')
- *
- * if ($solr->ping())
- * {
- * $solr->deleteByQuery('*:*'); //deletes ALL documents - be careful :)
- *
- * $document = new Apache_Solr_Document();
- * $document->id = uniqid(); //or something else suitably unique
- *
- * $document->title = 'Some Title';
- * $document->content = 'Some content for this wonderful document. Blah blah blah.';
- *
- * $solr->addDocument($document); //if you're going to be adding documents in bulk using addDocuments
- * //with an array of documents is faster
- *
- * $solr->commit(); //commit to see the deletes and the document
- * $solr->optimize(); //merges multiple segments into one
- *
- * //and the one we all care about, search!
- * //any other common or custom parameters to the request handler can go in the
- * //optional 4th array argument.
- * $solr->search('content:blah', 0, 10, array('sort' => 'timestamp desc'));
- * }
- * ...
- *
- *
- * @todo Investigate using other HTTP clients other than file_get_contents built-in handler. Could provide performance
- * improvements when dealing with multiple requests by using HTTP's keep alive functionality
- */
-class Apache_Solr_Service
-{
- /**
- * SVN Revision meta data for this class
- */
- const SVN_REVISION = '$Revision: 59 $';
-
- /**
- * SVN ID meta data for this class
- */
- const SVN_ID = '$Id: Service.php 59 2011-02-08 20:38:59Z donovan.jimenez $';
-
- /**
- * Response writer we'll request - JSON. See http://code.google.com/p/solr-php-client/issues/detail?id=6#c1 for reasoning
- */
- const SOLR_WRITER = 'json';
-
- /**
- * NamedList Treatment constants
- */
- const NAMED_LIST_FLAT = 'flat';
- const NAMED_LIST_MAP = 'map';
-
- /**
- * Search HTTP Methods
- */
- const METHOD_GET = 'GET';
- const METHOD_POST = 'POST';
-
- /**
- * Servlet mappings
- */
- const PING_SERVLET = 'admin/ping';
- const UPDATE_SERVLET = 'update';
- const SEARCH_SERVLET = 'select';
- const THREADS_SERVLET = 'admin/threads';
- const EXTRACT_SERVLET = 'update/extract';
-
- /**
- * Server identification strings
- *
- * @var string
- */
- protected $_host, $_port, $_path;
-
- /**
- * Whether {@link Apache_Solr_Response} objects should create {@link Apache_Solr_Document}s in
- * the returned parsed data
- *
- * @var boolean
- */
- protected $_createDocuments = true;
-
- /**
- * Whether {@link Apache_Solr_Response} objects should have multivalue fields with only a single value
- * collapsed to appear as a single value would.
- *
- * @var boolean
- */
- protected $_collapseSingleValueArrays = true;
-
- /**
- * How NamedLists should be formatted in the output. This specifically effects facet counts. Valid values
- * are {@link Apache_Solr_Service::NAMED_LIST_MAP} (default) or {@link Apache_Solr_Service::NAMED_LIST_FLAT}.
- *
- * @var string
- */
- protected $_namedListTreatment = self::NAMED_LIST_MAP;
-
- /**
- * Query delimiters. Someone might want to be able to change
- * these (to use & instead of & for example), so I've provided them.
- *
- * @var string
- */
- protected $_queryDelimiter = '?', $_queryStringDelimiter = '&', $_queryBracketsEscaped = true;
-
- /**
- * Constructed servlet full path URLs
- *
- * @var string
- */
- protected $_pingUrl, $_updateUrl, $_searchUrl, $_threadsUrl;
-
- /**
- * Keep track of whether our URLs have been constructed
- *
- * @var boolean
- */
- protected $_urlsInited = false;
-
- /**
- * HTTP Transport implementation (pluggable)
- *
- * @var Apache_Solr_HttpTransport_Interface
- */
- protected $_httpTransport = false;
-
- /**
- * Escape a value for special query characters such as ':', '(', ')', '*', '?', etc.
- *
- * NOTE: inside a phrase fewer characters need escaped, use {@link Apache_Solr_Service::escapePhrase()} instead
- *
- * @param string $value
- * @return string
- */
- static public function escape($value)
- {
- //list taken from http://lucene.apache.org/java/docs/queryparsersyntax.html#Escaping%20Special%20Characters
- $pattern = '/(\+|-|&&|\|\||!|\(|\)|\{|}|\[|]|\^|"|~|\*|\?|:|\\\)/';
- $replace = '\\\$1';
-
- return preg_replace($pattern, $replace, $value);
- }
-
- /**
- * Escape a value meant to be contained in a phrase for special query characters
- *
- * @param string $value
- * @return string
- */
- static public function escapePhrase($value)
- {
- $pattern = '/("|\\\)/';
- $replace = '\\\$1';
-
- return preg_replace($pattern, $replace, $value);
- }
-
- /**
- * Convenience function for creating phrase syntax from a value
- *
- * @param string $value
- * @return string
- */
- static public function phrase($value)
- {
- return '"' . self::escapePhrase($value) . '"';
- }
-
- /**
- * Constructor. All parameters are optional and will take on default values
- * if not specified.
- *
- * @param string $host
- * @param string $port
- * @param string $path
- * @param Apache_Solr_HttpTransport_Interface $httpTransport
- */
- public function __construct($host = 'localhost', $port = 8180, $path = '/solr/', $httpTransport = false)
- {
- $this->setHost($host);
- $this->setPort($port);
- $this->setPath($path);
-
- $this->_initUrls();
-
- if ($httpTransport)
- {
- $this->setHttpTransport($httpTransport);
- }
-
- // check that our php version is >= 5.1.3 so we can correct for http_build_query behavior later
- $this->_queryBracketsEscaped = version_compare(phpversion(), '5.1.3', '>=');
- }
-
- /**
- * Return a valid http URL given this server's host, port and path and a provided servlet name
- *
- * @param string $servlet
- * @return string
- */
- protected function _constructUrl($servlet, $params = array())
- {
- if (count($params))
- {
- //escape all parameters appropriately for inclusion in the query string
- $escapedParams = array();
-
- foreach ($params as $key => $value)
- {
- $escapedParams[] = urlencode($key) . '=' . urlencode($value);
- }
-
- $queryString = $this->_queryDelimiter . implode($this->_queryStringDelimiter, $escapedParams);
- }
- else
- {
- $queryString = '';
- }
-
- return 'http://' . $this->_host . ':' . $this->_port . $this->_path . $servlet . $queryString;
- }
-
- /**
- * Construct the Full URLs for the three servlets we reference
- */
- protected function _initUrls()
- {
- //Initialize our full servlet URLs now that we have server information
- $this->_extractUrl = $this->_constructUrl(self::EXTRACT_SERVLET);
- $this->_pingUrl = $this->_constructUrl(self::PING_SERVLET);
- $this->_searchUrl = $this->_constructUrl(self::SEARCH_SERVLET);
- $this->_threadsUrl = $this->_constructUrl(self::THREADS_SERVLET, array('wt' => self::SOLR_WRITER ));
- $this->_updateUrl = $this->_constructUrl(self::UPDATE_SERVLET, array('wt' => self::SOLR_WRITER ));
-
- $this->_urlsInited = true;
- }
-
- protected function _generateQueryString($params)
- {
- // use http_build_query to encode our arguments because its faster
- // than urlencoding all the parts ourselves in a loop
- //
- // because http_build_query treats arrays differently than we want to, correct the query
- // string by changing foo[#]=bar (# being an actual number) parameter strings to just
- // multiple foo=bar strings. This regex should always work since '=' will be urlencoded
- // anywhere else the regex isn't expecting it
- //
- // NOTE: before php 5.1.3 brackets were not url encoded by http_build query - we've checked
- // the php version in the constructor and put the results in the instance variable. Also, before
- // 5.1.2 the arg_separator parameter was not available, so don't use it
- if ($this->_queryBracketsEscaped)
- {
- $queryString = http_build_query($params, null, $this->_queryStringDelimiter);
- return preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', $queryString);
- }
- else
- {
- $queryString = http_build_query($params);
- return preg_replace('/\\[(?:[0-9]|[1-9][0-9]+)\\]=/', '=', $queryString);
- }
- }
-
- /**
- * Central method for making a get operation against this Solr Server
- *
- * @param string $url
- * @param float $timeout Read timeout in seconds
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If a non 200 response status is returned
- */
- protected function _sendRawGet($url, $timeout = FALSE)
- {
- $httpTransport = $this->getHttpTransport();
-
- $httpResponse = $httpTransport->performGetRequest($url, $timeout);
- $solrResponse = new Apache_Solr_Response($httpResponse, $this->_createDocuments, $this->_collapseSingleValueArrays);
-
- if ($solrResponse->getHttpStatus() != 200)
- {
- throw new Apache_Solr_HttpTransportException($solrResponse);
- }
-
- return $solrResponse;
- }
-
- /**
- * Central method for making a post operation against this Solr Server
- *
- * @param string $url
- * @param string $rawPost
- * @param float $timeout Read timeout in seconds
- * @param string $contentType
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If a non 200 response status is returned
- */
- protected function _sendRawPost($url, $rawPost, $timeout = FALSE, $contentType = 'text/xml; charset=UTF-8')
- {
- $httpTransport = $this->getHttpTransport();
-
- $httpResponse = $httpTransport->performPostRequest($url, $rawPost, $contentType, $timeout);
- $solrResponse = new Apache_Solr_Response($httpResponse, $this->_createDocuments, $this->_collapseSingleValueArrays);
-
- if ($solrResponse->getHttpStatus() != 200)
- {
- throw new Apache_Solr_HttpTransportException($solrResponse);
- }
-
- return $solrResponse;
- }
-
- /**
- * Returns the set host
- *
- * @return string
- */
- public function getHost()
- {
- return $this->_host;
- }
-
- /**
- * Set the host used. If empty will fallback to constants
- *
- * @param string $host
- *
- * @throws Apache_Solr_InvalidArgumentException If the host parameter is empty
- */
- public function setHost($host)
- {
- //Use the provided host or use the default
- if (empty($host))
- {
- throw new Apache_Solr_InvalidArgumentException('Host parameter is empty');
- }
- else
- {
- $this->_host = $host;
- }
-
- if ($this->_urlsInited)
- {
- $this->_initUrls();
- }
- }
-
- /**
- * Get the set port
- *
- * @return integer
- */
- public function getPort()
- {
- return $this->_port;
- }
-
- /**
- * Set the port used. If empty will fallback to constants
- *
- * @param integer $port
- *
- * @throws Apache_Solr_InvalidArgumentException If the port parameter is empty
- */
- public function setPort($port)
- {
- //Use the provided port or use the default
- $port = (int) $port;
-
- if ($port <= 0)
- {
- throw new Apache_Solr_InvalidArgumentException('Port is not a valid port number');
- }
- else
- {
- $this->_port = $port;
- }
-
- if ($this->_urlsInited)
- {
- $this->_initUrls();
- }
- }
-
- /**
- * Get the set path.
- *
- * @return string
- */
- public function getPath()
- {
- return $this->_path;
- }
-
- /**
- * Set the path used. If empty will fallback to constants
- *
- * @param string $path
- */
- public function setPath($path)
- {
- $path = trim($path, '/');
-
- $this->_path = '/' . $path . '/';
-
- if ($this->_urlsInited)
- {
- $this->_initUrls();
- }
- }
-
- /**
- * Get the current configured HTTP Transport
- *
- * @return HttpTransportInterface
- */
- public function getHttpTransport()
- {
- // lazy load a default if one has not be set
- if ($this->_httpTransport === false)
- {
- require_once(dirname(__FILE__) . '/HttpTransport/FileGetContents.php');
-
- $this->_httpTransport = new Apache_Solr_HttpTransport_FileGetContents();
- }
-
- return $this->_httpTransport;
- }
-
- /**
- * Set the HTTP Transport implemenation that will be used for all HTTP requests
- *
- * @param Apache_Solr_HttpTransport_Interface
- */
- public function setHttpTransport(Apache_Solr_HttpTransport_Interface $httpTransport)
- {
- $this->_httpTransport = $httpTransport;
- }
-
- /**
- * Set the create documents flag. This determines whether {@link Apache_Solr_Response} objects will
- * parse the response and create {@link Apache_Solr_Document} instances in place.
- *
- * @param boolean $createDocuments
- */
- public function setCreateDocuments($createDocuments)
- {
- $this->_createDocuments = (bool) $createDocuments;
- }
-
- /**
- * Get the current state of teh create documents flag.
- *
- * @return boolean
- */
- public function getCreateDocuments()
- {
- return $this->_createDocuments;
- }
-
- /**
- * Set the collapse single value arrays flag.
- *
- * @param boolean $collapseSingleValueArrays
- */
- public function setCollapseSingleValueArrays($collapseSingleValueArrays)
- {
- $this->_collapseSingleValueArrays = (bool) $collapseSingleValueArrays;
- }
-
- /**
- * Get the current state of the collapse single value arrays flag.
- *
- * @return boolean
- */
- public function getCollapseSingleValueArrays()
- {
- return $this->_collapseSingleValueArrays;
- }
-
- /**
- * Get the current default timeout setting (initially the default_socket_timeout ini setting)
- * in seconds
- *
- * @return float
- *
- * @deprecated Use the getDefaultTimeout method on the HTTP transport implementation
- */
- public function getDefaultTimeout()
- {
- return $this->getHttpTransport()->getDefaultTimeout();
- }
-
- /**
- * Set the default timeout for all calls that aren't passed a specific timeout
- *
- * @param float $timeout Timeout value in seconds
- *
- * @deprecated Use the setDefaultTimeout method on the HTTP transport implementation
- */
- public function setDefaultTimeout($timeout)
- {
- $this->getHttpTransport()->setDefaultTimeout($timeout);
- }
-
- /**
- * Set how NamedLists should be formatted in the response data. This mainly effects
- * the facet counts format.
- *
- * @param string $namedListTreatment
- * @throws Apache_Solr_InvalidArgumentException If invalid option is set
- */
- public function setNamedListTreatment($namedListTreatment)
- {
- switch ((string) $namedListTreatment)
- {
- case Apache_Solr_Service::NAMED_LIST_FLAT:
- $this->_namedListTreatment = Apache_Solr_Service::NAMED_LIST_FLAT;
- break;
-
- case Apache_Solr_Service::NAMED_LIST_MAP:
- $this->_namedListTreatment = Apache_Solr_Service::NAMED_LIST_MAP;
- break;
-
- default:
- throw new Apache_Solr_InvalidArgumentException('Not a valid named list treatement option');
- }
- }
-
- /**
- * Get the current setting for named list treatment.
- *
- * @return string
- */
- public function getNamedListTreatment()
- {
- return $this->_namedListTreatment;
- }
-
- /**
- * Set the string used to separate the path form the query string.
- * Defaulted to '?'
- *
- * @param string $queryDelimiter
- */
- public function setQueryDelimiter($queryDelimiter)
- {
- $this->_queryDelimiter = $queryDelimiter;
- }
-
- /**
- * Set the string used to separate the parameters in thequery string
- * Defaulted to '&'
- *
- * @param string $queryStringDelimiter
- */
- public function setQueryStringDelimiter($queryStringDelimiter)
- {
- $this->_queryStringDelimiter = $queryStringDelimiter;
- }
-
- /**
- * Call the /admin/ping servlet, can be used to quickly tell if a connection to the
- * server is able to be made.
- *
- * @param float $timeout maximum time to wait for ping in seconds, -1 for unlimited (default is 2)
- * @return float Actual time taken to ping the server, FALSE if timeout or HTTP error status occurs
- */
- public function ping($timeout = 2)
- {
- $start = microtime(true);
-
- $httpTransport = $this->getHttpTransport();
-
- $httpResponse = $httpTransport->performHeadRequest($this->_pingUrl, $timeout);
- $solrResponse = new Apache_Solr_Response($httpResponse, $this->_createDocuments, $this->_collapseSingleValueArrays);
-
- if ($solrResponse->getHttpStatus() == 200)
- {
- return microtime(true) - $start;
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Call the /admin/threads servlet and retrieve information about all threads in the
- * Solr servlet's thread group. Useful for diagnostics.
- *
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function threads()
- {
- return $this->_sendRawGet($this->_threadsUrl);
- }
-
- /**
- * Raw Add Method. Takes a raw post body and sends it to the update service. Post body
- * should be a complete and well formed "add" xml document.
- *
- * @param string $rawPost
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function add($rawPost)
- {
- return $this->_sendRawPost($this->_updateUrl, $rawPost);
- }
-
- /**
- * Add a Solr Document to the index
- *
- * @param Apache_Solr_Document $document
- * @param boolean $allowDups
- * @param boolean $overwritePending
- * @param boolean $overwriteCommitted
- * @param integer $commitWithin The number of milliseconds that a document must be committed within, see @{link http://wiki.apache.org/solr/UpdateXmlMessages#The_Update_Schema} for details. If left empty this property will not be set in the request.
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function addDocument(Apache_Solr_Document $document, $allowDups = false, $overwritePending = true, $overwriteCommitted = true, $commitWithin = 0)
- {
- $dupValue = $allowDups ? 'true' : 'false';
- $pendingValue = $overwritePending ? 'true' : 'false';
- $committedValue = $overwriteCommitted ? 'true' : 'false';
-
- $commitWithin = (int) $commitWithin;
- $commitWithinString = $commitWithin > 0 ? " commitWithin=\"{$commitWithin}\"" : '';
-
- $rawPost = "";
- $rawPost .= $this->_documentToXmlFragment($document);
- $rawPost .= '';
-
- return $this->add($rawPost);
- }
-
- /**
- * Add an array of Solr Documents to the index all at once
- *
- * @param array $documents Should be an array of Apache_Solr_Document instances
- * @param boolean $allowDups
- * @param boolean $overwritePending
- * @param boolean $overwriteCommitted
- * @param integer $commitWithin The number of milliseconds that a document must be committed within, see @{link http://wiki.apache.org/solr/UpdateXmlMessages#The_Update_Schema} for details. If left empty this property will not be set in the request.
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function addDocuments($documents, $allowDups = false, $overwritePending = true, $overwriteCommitted = true, $commitWithin = 0)
- {
- $dupValue = $allowDups ? 'true' : 'false';
- $pendingValue = $overwritePending ? 'true' : 'false';
- $committedValue = $overwriteCommitted ? 'true' : 'false';
-
- $commitWithin = (int) $commitWithin;
- $commitWithinString = $commitWithin > 0 ? " commitWithin=\"{$commitWithin}\"" : '';
-
- $rawPost = "";
-
- foreach ($documents as $document)
- {
- if ($document instanceof Apache_Solr_Document)
- {
- $rawPost .= $this->_documentToXmlFragment($document);
- }
- }
-
- $rawPost .= '';
-
- return $this->add($rawPost);
- }
-
- /**
- * Create an XML fragment from a {@link Apache_Solr_Document} instance appropriate for use inside a Solr add call
- *
- * @return string
- */
- protected function _documentToXmlFragment(Apache_Solr_Document $document)
- {
- $xml = 'getBoost() !== false)
- {
- $xml .= ' boost="' . $document->getBoost() . '"';
- }
-
- $xml .= '>';
-
- foreach ($document as $key => $value)
- {
- $key = htmlspecialchars($key, ENT_QUOTES, 'UTF-8');
- $fieldBoost = $document->getFieldBoost($key);
-
- if (is_array($value))
- {
- foreach ($value as $multivalue)
- {
- $xml .= '';
- }
- }
- else
- {
- $xml .= '';
- }
- }
-
- $xml .= '';
-
- // replace any control characters to avoid Solr XML parser exception
- return $this->_stripCtrlChars($xml);
- }
-
- /**
- * Replace control (non-printable) characters from string that are invalid to Solr's XML parser with a space.
- *
- * @param string $string
- * @return string
- */
- protected function _stripCtrlChars($string)
- {
- // See: http://w3.org/International/questions/qa-forms-utf-8.html
- // Printable utf-8 does not include any of these chars below x7F
- return preg_replace('@[\x00-\x08\x0B\x0C\x0E-\x1F]@', ' ', $string);
- }
-
- /**
- * Send a commit command. Will be synchronous unless both wait parameters are set to false.
- *
- * @param boolean $expungeDeletes Defaults to false, merge segments with deletes away
- * @param boolean $waitFlush Defaults to true, block until index changes are flushed to disk
- * @param boolean $waitSearcher Defaults to true, block until a new searcher is opened and registered as the main query searcher, making the changes visible
- * @param float $timeout Maximum expected duration (in seconds) of the commit operation on the server (otherwise, will throw a communication exception). Defaults to 1 hour
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function commit($expungeDeletes = false, $waitFlush = true, $waitSearcher = true, $timeout = 3600)
- {
- $expungeValue = $expungeDeletes ? 'true' : 'false';
- $flushValue = $waitFlush ? 'true' : 'false';
- $searcherValue = $waitSearcher ? 'true' : 'false';
-
- $rawPost = '';
-
- return $this->_sendRawPost($this->_updateUrl, $rawPost, $timeout);
- }
-
- /**
- * Raw Delete Method. Takes a raw post body and sends it to the update service. Body should be
- * a complete and well formed "delete" xml document
- *
- * @param string $rawPost Expected to be utf-8 encoded xml document
- * @param float $timeout Maximum expected duration of the delete operation on the server (otherwise, will throw a communication exception)
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function delete($rawPost, $timeout = 3600)
- {
- return $this->_sendRawPost($this->_updateUrl, $rawPost, $timeout);
- }
-
- /**
- * Create a delete document based on document ID
- *
- * @param string $id Expected to be utf-8 encoded
- * @param boolean $fromPending
- * @param boolean $fromCommitted
- * @param float $timeout Maximum expected duration of the delete operation on the server (otherwise, will throw a communication exception)
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function deleteById($id, $fromPending = true, $fromCommitted = true, $timeout = 3600)
- {
- $pendingValue = $fromPending ? 'true' : 'false';
- $committedValue = $fromCommitted ? 'true' : 'false';
-
- //escape special xml characters
- $id = htmlspecialchars($id, ENT_NOQUOTES, 'UTF-8');
-
- $rawPost = '' . $id . '';
-
- return $this->delete($rawPost, $timeout);
- }
-
- /**
- * Create and post a delete document based on multiple document IDs.
- *
- * @param array $ids Expected to be utf-8 encoded strings
- * @param boolean $fromPending
- * @param boolean $fromCommitted
- * @param float $timeout Maximum expected duration of the delete operation on the server (otherwise, will throw a communication exception)
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function deleteByMultipleIds($ids, $fromPending = true, $fromCommitted = true, $timeout = 3600)
- {
- $pendingValue = $fromPending ? 'true' : 'false';
- $committedValue = $fromCommitted ? 'true' : 'false';
-
- $rawPost = '';
-
- foreach ($ids as $id)
- {
- //escape special xml characters
- $id = htmlspecialchars($id, ENT_NOQUOTES, 'UTF-8');
-
- $rawPost .= '' . $id . '';
- }
-
- $rawPost .= '';
-
- return $this->delete($rawPost, $timeout);
- }
-
- /**
- * Create a delete document based on a query and submit it
- *
- * @param string $rawQuery Expected to be utf-8 encoded
- * @param boolean $fromPending
- * @param boolean $fromCommitted
- * @param float $timeout Maximum expected duration of the delete operation on the server (otherwise, will throw a communication exception)
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function deleteByQuery($rawQuery, $fromPending = true, $fromCommitted = true, $timeout = 3600)
- {
- $pendingValue = $fromPending ? 'true' : 'false';
- $committedValue = $fromCommitted ? 'true' : 'false';
-
- // escape special xml characters
- $rawQuery = htmlspecialchars($rawQuery, ENT_NOQUOTES, 'UTF-8');
-
- $rawPost = '' . $rawQuery . '';
-
- return $this->delete($rawPost, $timeout);
- }
-
- /**
- * Use Solr Cell to extract document contents. See {@link http://wiki.apache.org/solr/ExtractingRequestHandler} for information on how
- * to use Solr Cell and what parameters are available.
- *
- * NOTE: when passing an Apache_Solr_Document instance, field names and boosts will automatically be prepended by "literal." and "boost."
- * as appropriate. Any keys from the $params array will NOT be treated this way. Any mappings from the document will overwrite key / value
- * pairs in the params array if they have the same name (e.g. you pass a "literal.id" key and value in your $params array but you also
- * pass in a document isntance with an "id" field" - the document's value(s) will take precedence).
- *
- * @param string $file Path to file to extract data from
- * @param array $params optional array of key value pairs that will be sent with the post (see Solr Cell documentation)
- * @param Apache_Solr_Document $document optional document that will be used to generate post parameters (literal.* and boost.* params)
- * @param string $mimetype optional mimetype specification (for the file being extracted)
- *
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_InvalidArgumentException if $file, $params, or $document are invalid.
- */
- public function extract($file, $params = array(), $document = null, $mimetype = 'application/octet-stream')
- {
- // check if $params is an array (allow null for default empty array)
- if (!is_null($params))
- {
- if (!is_array($params))
- {
- throw new Apache_Solr_InvalidArgumentException("\$params must be a valid array or null");
- }
- }
- else
- {
- $params = array();
- }
-
- // if $file is an http request, defer to extractFromUrl instead
- if (substr($file, 0, 7) == 'http://' || substr($file, 0, 8) == 'https://')
- {
- return $this->extractFromUrl($file, $params, $document, $mimetype);
- }
-
- // read the contents of the file
- $contents = @file_get_contents($file);
-
- if ($contents !== false)
- {
- // add the resource.name parameter if not specified
- if (!isset($params['resource.name']))
- {
- $params['resource.name'] = basename($file);
- }
-
- // delegate the rest to extractFromString
- return $this->extractFromString($contents, $params, $document, $mimetype);
- }
- else
- {
- throw new Apache_Solr_InvalidArgumentException("File '{$file}' is empty or could not be read");
- }
- }
-
- /**
- * Use Solr Cell to extract document contents. See {@link http://wiki.apache.org/solr/ExtractingRequestHandler} for information on how
- * to use Solr Cell and what parameters are available.
- *
- * NOTE: when passing an Apache_Solr_Document instance, field names and boosts will automatically be prepended by "literal." and "boost."
- * as appropriate. Any keys from the $params array will NOT be treated this way. Any mappings from the document will overwrite key / value
- * pairs in the params array if they have the same name (e.g. you pass a "literal.id" key and value in your $params array but you also
- * pass in a document isntance with an "id" field" - the document's value(s) will take precedence).
- *
- * @param string $data Data that will be passed to Solr Cell
- * @param array $params optional array of key value pairs that will be sent with the post (see Solr Cell documentation)
- * @param Apache_Solr_Document $document optional document that will be used to generate post parameters (literal.* and boost.* params)
- * @param string $mimetype optional mimetype specification (for the file being extracted)
- *
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_InvalidArgumentException if $file, $params, or $document are invalid.
- *
- * @todo Should be using multipart/form-data to post parameter values, but I could not get my implementation to work. Needs revisisted.
- */
- public function extractFromString($data, $params = array(), $document = null, $mimetype = 'application/octet-stream')
- {
- // check if $params is an array (allow null for default empty array)
- if (!is_null($params))
- {
- if (!is_array($params))
- {
- throw new Apache_Solr_InvalidArgumentException("\$params must be a valid array or null");
- }
- }
- else
- {
- $params = array();
- }
-
- // make sure we receive our response in JSON and have proper name list treatment
- $params['wt'] = self::SOLR_WRITER;
- $params['json.nl'] = $this->_namedListTreatment;
-
- // check if $document is an Apache_Solr_Document instance
- if (!is_null($document) && $document instanceof Apache_Solr_Document)
- {
- // iterate document, adding literal.* and boost.* fields to $params as appropriate
- foreach ($document as $field => $fieldValue)
- {
- // check if we need to add a boost.* parameters
- $fieldBoost = $document->getFieldBoost($field);
-
- if ($fieldBoost !== false)
- {
- $params["boost.{$field}"] = $fieldBoost;
- }
-
- // add the literal.* parameter
- $params["literal.{$field}"] = $fieldValue;
- }
- }
-
- // params will be sent to SOLR in the QUERY STRING
- $queryString = $this->_generateQueryString($params);
-
- // the file contents will be sent to SOLR as the POST BODY - we use application/octect-stream as default mimetype
- return $this->_sendRawPost($this->_extractUrl . $this->_queryDelimiter . $queryString, $data, false, $mimetype);
- }
-
- /**
- * Use Solr Cell to extract document contents. See {@link http://wiki.apache.org/solr/ExtractingRequestHandler} for information on how
- * to use Solr Cell and what parameters are available.
- *
- * NOTE: when passing an Apache_Solr_Document instance, field names and boosts will automatically be prepended by "literal." and "boost."
- * as appropriate. Any keys from the $params array will NOT be treated this way. Any mappings from the document will overwrite key / value
- * pairs in the params array if they have the same name (e.g. you pass a "literal.id" key and value in your $params array but you also
- * pass in a document isntance with an "id" field" - the document's value(s) will take precedence).
- *
- * @param string $url URL
- * @param array $params optional array of key value pairs that will be sent with the post (see Solr Cell documentation)
- * @param Apache_Solr_Document $document optional document that will be used to generate post parameters (literal.* and boost.* params)
- * @param string $mimetype optional mimetype specification (for the file being extracted)
- *
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_InvalidArgumentException if $url, $params, or $document are invalid.
- */
- public function extractFromUrl($url, $params = array(), $document = null, $mimetype = 'application/octet-stream')
- {
- // check if $params is an array (allow null for default empty array)
- if (!is_null($params))
- {
- if (!is_array($params))
- {
- throw new Apache_Solr_InvalidArgumentException("\$params must be a valid array or null");
- }
- }
- else
- {
- $params = array();
- }
-
- $httpTransport = $this->getHttpTransport();
-
- // read the contents of the URL using our configured Http Transport and default timeout
- $httpResponse = $httpTransport->performGetRequest($url);
-
- // check that its a 200 response
- if ($httpResponse->getStatusCode() == 200)
- {
- // add the resource.name parameter if not specified
- if (!isset($params['resource.name']))
- {
- $params['resource.name'] = $url;
- }
-
- // delegate the rest to extractFromString
- return $this->extractFromString($httpResponse->getBody(), $params, $document, $mimetype);
- }
- else
- {
- throw new Apache_Solr_InvalidArgumentException("URL '{$url}' returned non 200 response code");
- }
- }
-
- /**
- * Send an optimize command. Will be synchronous unless both wait parameters are set
- * to false.
- *
- * @param boolean $waitFlush
- * @param boolean $waitSearcher
- * @param float $timeout Maximum expected duration of the commit operation on the server (otherwise, will throw a communication exception)
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function optimize($waitFlush = true, $waitSearcher = true, $timeout = 3600)
- {
- $flushValue = $waitFlush ? 'true' : 'false';
- $searcherValue = $waitSearcher ? 'true' : 'false';
-
- $rawPost = '';
-
- return $this->_sendRawPost($this->_updateUrl, $rawPost, $timeout);
- }
-
- /**
- * Simple Search interface
- *
- * @param string $query The raw query string
- * @param int $offset The starting offset for result documents
- * @param int $limit The maximum number of result documents to return
- * @param array $params key / value pairs for other query parameters (see Solr documentation), use arrays for parameter keys used more than once (e.g. facet.field)
- * @param string $method The HTTP method (Apache_Solr_Service::METHOD_GET or Apache_Solr_Service::METHOD::POST)
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- * @throws Apache_Solr_InvalidArgumentException If an invalid HTTP method is used
- */
- public function search($query, $offset = 0, $limit = 10, $params = array(), $method = self::METHOD_GET)
- {
- // ensure params is an array
- if (!is_null($params))
- {
- if (!is_array($params))
- {
- // params was specified but was not an array - invalid
- throw new Apache_Solr_InvalidArgumentException("\$params must be a valid array or null");
- }
- }
- else
- {
- $params = array();
- }
-
- // construct our full parameters
-
- // common parameters in this interface
- $params['wt'] = self::SOLR_WRITER;
- $params['json.nl'] = $this->_namedListTreatment;
-
- $params['q'] = $query;
- $params['start'] = $offset;
- $params['rows'] = $limit;
-
- $queryString = $this->_generateQueryString($params);
-
- if ($method == self::METHOD_GET)
- {
- return $this->_sendRawGet($this->_searchUrl . $this->_queryDelimiter . $queryString);
- }
- else if ($method == self::METHOD_POST)
- {
- return $this->_sendRawPost($this->_searchUrl, $queryString, FALSE, 'application/x-www-form-urlencoded; charset=UTF-8');
- }
- else
- {
- throw new Apache_Solr_InvalidArgumentException("Unsupported method '$method', please use the Apache_Solr_Service::METHOD_* constants");
- }
- }
-}
\ No newline at end of file
diff --git a/SolrPhpClient/Apache/Solr/Service/Balancer.php b/SolrPhpClient/Apache/Solr/Service/Balancer.php
deleted file mode 100644
index cad57e52..00000000
--- a/SolrPhpClient/Apache/Solr/Service/Balancer.php
+++ /dev/null
@@ -1,914 +0,0 @@
-, Dan Wolfe
- */
-
-// See Issue #1 (http://code.google.com/p/solr-php-client/issues/detail?id=1)
-// Doesn't follow typical include path conventions, but is more convenient for users
-require_once(dirname(dirname(__FILE__)) . '/Service.php');
-
-require_once(dirname(dirname(__FILE__)) . '/NoServiceAvailableException.php');
-
-/**
- * Reference Implementation for using multiple Solr services in a distribution. Functionality
- * includes:
- * routing of read / write operations
- * failover (on selection) for multiple read servers
- */
-class Apache_Solr_Service_Balancer
-{
- /**
- * SVN Revision meta data for this class
- */
- const SVN_REVISION = '$Revision: 54 $';
-
- /**
- * SVN ID meta data for this class
- */
- const SVN_ID = '$Id: Balancer.php 54 2011-02-04 16:29:18Z donovan.jimenez $';
-
- protected $_createDocuments = true;
-
- protected $_readableServices = array();
- protected $_writeableServices = array();
-
- protected $_currentReadService = null;
- protected $_currentWriteService = null;
-
- protected $_readPingTimeout = 2;
- protected $_writePingTimeout = 4;
-
- // Configuration for server selection backoff intervals
- protected $_useBackoff = false; // Set to true to use more resillient write server selection
- protected $_backoffLimit = 600; // 10 minute default maximum
- protected $_backoffEscalation = 2.0; // Rate at which to increase backoff period
- protected $_defaultBackoff = 2.0; // Default backoff interval
-
- /**
- * Escape a value for special query characters such as ':', '(', ')', '*', '?', etc.
- *
- * NOTE: inside a phrase fewer characters need escaped, use {@link Apache_Solr_Service::escapePhrase()} instead
- *
- * @param string $value
- * @return string
- */
- static public function escape($value)
- {
- return Apache_Solr_Service::escape($value);
- }
-
- /**
- * Escape a value meant to be contained in a phrase for special query characters
- *
- * @param string $value
- * @return string
- */
- static public function escapePhrase($value)
- {
- return Apache_Solr_Service::escapePhrase($value);
- }
-
- /**
- * Convenience function for creating phrase syntax from a value
- *
- * @param string $value
- * @return string
- */
- static public function phrase($value)
- {
- return Apache_Solr_Service::phrase($value);
- }
-
- /**
- * Constructor. Takes arrays of read and write service instances or descriptions
- *
- * @param array $readableServices
- * @param array $writeableServices
- */
- public function __construct($readableServices = array(), $writeableServices = array())
- {
- //setup readable services
- foreach ($readableServices as $service)
- {
- $this->addReadService($service);
- }
-
- //setup writeable services
- foreach ($writeableServices as $service)
- {
- $this->addWriteService($service);
- }
- }
-
- public function setReadPingTimeout($timeout)
- {
- $this->_readPingTimeout = $timeout;
- }
-
- public function setWritePingTimeout($timeout)
- {
- $this->_writePingTimeout = $timeout;
- }
-
- public function setUseBackoff($enable)
- {
- $this->_useBackoff = $enable;
- }
-
- /**
- * Generates a service ID
- *
- * @param string $host
- * @param integer $port
- * @param string $path
- * @return string
- */
- protected function _getServiceId($host, $port, $path)
- {
- return $host . ':' . $port . $path;
- }
-
- /**
- * Adds a service instance or service descriptor (if it is already
- * not added)
- *
- * @param mixed $service
- *
- * @throws Apache_Solr_InvalidArgumentException If service descriptor is not valid
- */
- public function addReadService($service)
- {
- if ($service instanceof Apache_Solr_Service)
- {
- $id = $this->_getServiceId($service->getHost(), $service->getPort(), $service->getPath());
-
- $this->_readableServices[$id] = $service;
- }
- else if (is_array($service))
- {
- if (isset($service['host']) && isset($service['port']) && isset($service['path']))
- {
- $id = $this->_getServiceId((string)$service['host'], (int)$service['port'], (string)$service['path']);
-
- $this->_readableServices[$id] = $service;
- }
- else
- {
- throw new Apache_Solr_InvalidArgumentException('A Readable Service description array does not have all required elements of host, port, and path');
- }
- }
- }
-
- /**
- * Removes a service instance or descriptor from the available services
- *
- * @param mixed $service
- *
- * @throws Apache_Solr_InvalidArgumentException If service descriptor is not valid
- */
- public function removeReadService($service)
- {
- $id = '';
-
- if ($service instanceof Apache_Solr_Service)
- {
- $id = $this->_getServiceId($service->getHost(), $service->getPort(), $service->getPath());
- }
- else if (is_array($service))
- {
- if (isset($service['host']) && isset($service['port']) && isset($service['path']))
- {
- $id = $this->_getServiceId((string)$service['host'], (int)$service['port'], (string)$service['path']);
- }
- else
- {
- throw new Apache_Solr_InvalidArgumentException('A Readable Service description array does not have all required elements of host, port, and path');
- }
- }
- else if (is_string($service))
- {
- $id = $service;
- }
-
- if ($id && isset($this->_readableServices[$id]))
- {
- unset($this->_readableServices[$id]);
- }
- }
-
- /**
- * Adds a service instance or service descriptor (if it is already
- * not added)
- *
- * @param mixed $service
- *
- * @throws Apache_Solr_InvalidArgumentException If service descriptor is not valid
- */
- public function addWriteService($service)
- {
- if ($service instanceof Apache_Solr_Service)
- {
- $id = $this->_getServiceId($service->getHost(), $service->getPort(), $service->getPath());
-
- $this->_writeableServices[$id] = $service;
- }
- else if (is_array($service))
- {
- if (isset($service['host']) && isset($service['port']) && isset($service['path']))
- {
- $id = $this->_getServiceId((string)$service['host'], (int)$service['port'], (string)$service['path']);
-
- $this->_writeableServices[$id] = $service;
- }
- else
- {
- throw new Apache_Solr_InvalidArgumentException('A Writeable Service description array does not have all required elements of host, port, and path');
- }
- }
- }
-
- /**
- * Removes a service instance or descriptor from the available services
- *
- * @param mixed $service
- *
- * @throws Apache_Solr_InvalidArgumentException If service descriptor is not valid
- */
- public function removeWriteService($service)
- {
- $id = '';
-
- if ($service instanceof Apache_Solr_Service)
- {
- $id = $this->_getServiceId($service->getHost(), $service->getPort(), $service->getPath());
- }
- else if (is_array($service))
- {
- if (isset($service['host']) && isset($service['port']) && isset($service['path']))
- {
- $id = $this->_getServiceId((string)$service['host'], (int)$service['port'], (string)$service['path']);
- }
- else
- {
- throw new Apache_Solr_InvalidArgumentException('A Readable Service description array does not have all required elements of host, port, and path');
- }
- }
- else if (is_string($service))
- {
- $id = $service;
- }
-
- if ($id && isset($this->_writeableServices[$id]))
- {
- unset($this->_writeableServices[$id]);
- }
- }
-
- /**
- * Iterate through available read services and select the first with a ping
- * that satisfies configured timeout restrictions (or the default)
- *
- * @return Apache_Solr_Service
- *
- * @throws Apache_Solr_NoServiceAvailableException If there are no read services that meet requirements
- */
- protected function _selectReadService($forceSelect = false)
- {
- if (!$this->_currentReadService || !isset($this->_readableServices[$this->_currentReadService]) || $forceSelect)
- {
- if ($this->_currentReadService && isset($this->_readableServices[$this->_currentReadService]) && $forceSelect)
- {
- // we probably had a communication error, ping the current read service, remove it if it times out
- if ($this->_readableServices[$this->_currentReadService]->ping($this->_readPingTimeout) === false)
- {
- $this->removeReadService($this->_currentReadService);
- }
- }
-
- if (count($this->_readableServices))
- {
- // select one of the read services at random
- $ids = array_keys($this->_readableServices);
-
- $id = $ids[rand(0, count($ids) - 1)];
- $service = $this->_readableServices[$id];
-
- if (is_array($service))
- {
- //convert the array definition to a client object
- $service = new Apache_Solr_Service($service['host'], $service['port'], $service['path']);
- $this->_readableServices[$id] = $service;
- }
-
- $service->setCreateDocuments($this->_createDocuments);
- $this->_currentReadService = $id;
- }
- else
- {
- throw new Apache_Solr_NoServiceAvailableException('No read services were available');
- }
- }
-
- return $this->_readableServices[$this->_currentReadService];
- }
-
- /**
- * Iterate through available write services and select the first with a ping
- * that satisfies configured timeout restrictions (or the default)
- *
- * @return Apache_Solr_Service
- *
- * @throws Apache_Solr_NoServiceAvailableException If there are no write services that meet requirements
- */
- protected function _selectWriteService($forceSelect = false)
- {
- if($this->_useBackoff)
- {
- return $this->_selectWriteServiceSafe($forceSelect);
- }
-
- if (!$this->_currentWriteService || !isset($this->_writeableServices[$this->_currentWriteService]) || $forceSelect)
- {
- if ($this->_currentWriteService && isset($this->_writeableServices[$this->_currentWriteService]) && $forceSelect)
- {
- // we probably had a communication error, ping the current read service, remove it if it times out
- if ($this->_writeableServices[$this->_currentWriteService]->ping($this->_writePingTimeout) === false)
- {
- $this->removeWriteService($this->_currentWriteService);
- }
- }
-
- if (count($this->_writeableServices))
- {
- // select one of the read services at random
- $ids = array_keys($this->_writeableServices);
-
- $id = $ids[rand(0, count($ids) - 1)];
- $service = $this->_writeableServices[$id];
-
- if (is_array($service))
- {
- //convert the array definition to a client object
- $service = new Apache_Solr_Service($service['host'], $service['port'], $service['path']);
- $this->_writeableServices[$id] = $service;
- }
-
- $this->_currentWriteService = $id;
- }
- else
- {
- throw new Apache_Solr_NoServiceAvailableException('No write services were available');
- }
- }
-
- return $this->_writeableServices[$this->_currentWriteService];
- }
-
- /**
- * Iterate through available write services and select the first with a ping
- * that satisfies configured timeout restrictions (or the default). The
- * timeout period will increase until a connection is made or the limit is
- * reached. This will allow for increased reliability with heavily loaded
- * server(s).
- *
- * @return Apache_Solr_Service
- *
- * @throws Apache_Solr_NoServiceAvailableException If there are no write services that meet requirements
- */
-
- protected function _selectWriteServiceSafe($forceSelect = false)
- {
- if (!$this->_currentWriteService || !isset($this->_writeableServices[$this->_currentWriteService]) || $forceSelect)
- {
- if (count($this->_writeableServices))
- {
- $backoff = $this->_defaultBackoff;
-
- do {
- // select one of the read services at random
- $ids = array_keys($this->_writeableServices);
-
- $id = $ids[rand(0, count($ids) - 1)];
- $service = $this->_writeableServices[$id];
-
- if (is_array($service))
- {
- //convert the array definition to a client object
- $service = new Apache_Solr_Service($service['host'], $service['port'], $service['path']);
- $this->_writeableServices[$id] = $service;
- }
-
- $this->_currentWriteService = $id;
-
- $backoff *= $this->_backoffEscalation;
-
- if($backoff > $this->_backoffLimit)
- {
- throw new Apache_Solr_NoServiceAvailableException('No write services were available. All timeouts exceeded.');
- }
-
- } while($this->_writeableServices[$this->_currentWriteService]->ping($backoff) === false);
- }
- else
- {
- throw new Apache_Solr_NoServiceAvailableException('No write services were available');
- }
- }
-
- return $this->_writeableServices[$this->_currentWriteService];
- }
-
- /**
- * Set the create documents flag. This determines whether {@link Apache_Solr_Response} objects will
- * parse the response and create {@link Apache_Solr_Document} instances in place.
- *
- * @param boolean $createDocuments
- */
- public function setCreateDocuments($createDocuments)
- {
- $this->_createDocuments = (bool) $createDocuments;
-
- // set on current read service
- if ($this->_currentReadService)
- {
- $service = $this->_selectReadService();
- $service->setCreateDocuments($createDocuments);
- }
- }
-
- /**
- * Get the current state of teh create documents flag.
- *
- * @return boolean
- */
- public function getCreateDocuments()
- {
- return $this->_createDocuments;
- }
-
- /**
- * Raw Add Method. Takes a raw post body and sends it to the update service. Post body
- * should be a complete and well formed "add" xml document.
- *
- * @param string $rawPost
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function add($rawPost)
- {
- $service = $this->_selectWriteService();
-
- do
- {
- try
- {
- return $service->add($rawPost);
- }
- catch (Apache_Solr_HttpTransportException $e)
- {
- if ($e->getCode() != 0) //IF NOT COMMUNICATION ERROR
- {
- throw $e;
- }
- }
-
- $service = $this->_selectWriteService(true);
- } while ($service);
-
- return false;
- }
-
- /**
- * Add a Solr Document to the index
- *
- * @param Apache_Solr_Document $document
- * @param boolean $allowDups
- * @param boolean $overwritePending
- * @param boolean $overwriteCommitted
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function addDocument(Apache_Solr_Document $document, $allowDups = false, $overwritePending = true, $overwriteCommitted = true)
- {
- $service = $this->_selectWriteService();
-
- do
- {
- try
- {
- return $service->addDocument($document, $allowDups, $overwritePending, $overwriteCommitted);
- }
- catch (Apache_Solr_HttpTransportException $e)
- {
- if ($e->getCode() != 0) //IF NOT COMMUNICATION ERROR
- {
- throw $e;
- }
- }
-
- $service = $this->_selectWriteService(true);
- } while ($service);
-
- return false;
- }
-
- /**
- * Add an array of Solr Documents to the index all at once
- *
- * @param array $documents Should be an array of Apache_Solr_Document instances
- * @param boolean $allowDups
- * @param boolean $overwritePending
- * @param boolean $overwriteCommitted
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function addDocuments($documents, $allowDups = false, $overwritePending = true, $overwriteCommitted = true)
- {
- $service = $this->_selectWriteService();
-
- do
- {
- try
- {
- return $service->addDocuments($documents, $allowDups, $overwritePending, $overwriteCommitted);
- }
- catch (Apache_Solr_HttpTransportException $e)
- {
- if ($e->getCode() != 0) //IF NOT COMMUNICATION ERROR
- {
- throw $e;
- }
- }
-
- $service = $this->_selectWriteService(true);
- } while ($service);
-
- return false;
- }
-
- /**
- * Send a commit command. Will be synchronous unless both wait parameters are set
- * to false.
- *
- * @param boolean $waitFlush
- * @param boolean $waitSearcher
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function commit($optimize = true, $waitFlush = true, $waitSearcher = true, $timeout = 3600)
- {
- $service = $this->_selectWriteService();
-
- do
- {
- try
- {
- return $service->commit($optimize, $waitFlush, $waitSearcher, $timeout);
- }
- catch (Apache_Solr_HttpTransportException $e)
- {
- if ($e->getCode() != 0) //IF NOT COMMUNICATION ERROR
- {
- throw $e;
- }
- }
-
- $service = $this->_selectWriteService(true);
- } while ($service);
-
- return false;
- }
-
- /**
- * Raw Delete Method. Takes a raw post body and sends it to the update service. Body should be
- * a complete and well formed "delete" xml document
- *
- * @param string $rawPost
- * @param float $timeout Maximum expected duration of the delete operation on the server (otherwise, will throw a communication exception)
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function delete($rawPost, $timeout = 3600)
- {
- $service = $this->_selectWriteService();
-
- do
- {
- try
- {
- return $service->delete($rawPost, $timeout);
- }
- catch (Apache_Solr_HttpTransportException $e)
- {
- if ($e->getCode() != 0) //IF NOT COMMUNICATION ERROR
- {
- throw $e;
- }
- }
-
- $service = $this->_selectWriteService(true);
- } while ($service);
-
- return false;
- }
-
- /**
- * Create a delete document based on document ID
- *
- * @param string $id
- * @param boolean $fromPending
- * @param boolean $fromCommitted
- * @param float $timeout Maximum expected duration of the delete operation on the server (otherwise, will throw a communication exception)
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function deleteById($id, $fromPending = true, $fromCommitted = true, $timeout = 3600)
- {
- $service = $this->_selectWriteService();
-
- do
- {
- try
- {
- return $service->deleteById($id, $fromPending, $fromCommitted, $timeout);
- }
- catch (Apache_Solr_HttpTransportException $e)
- {
- if ($e->getCode() != 0) //IF NOT COMMUNICATION ERROR
- {
- throw $e;
- }
- }
-
- $service = $this->_selectWriteService(true);
- } while ($service);
-
- return false;
- }
-
- /**
- * Create and post a delete document based on multiple document IDs.
- *
- * @param array $ids Expected to be utf-8 encoded strings
- * @param boolean $fromPending
- * @param boolean $fromCommitted
- * @param float $timeout Maximum expected duration of the delete operation on the server (otherwise, will throw a communication exception)
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function deleteByMultipleIds($ids, $fromPending = true, $fromCommitted = true, $timeout = 3600)
- {
- $service = $this->_selectWriteService();
-
- do
- {
- try
- {
- return $service->deleteByMultipleId($ids, $fromPending, $fromCommitted, $timeout);
- }
- catch (Apache_Solr_HttpTransportException $e)
- {
- if ($e->getCode() != 0) //IF NOT COMMUNICATION ERROR
- {
- throw $e;
- }
- }
-
- $service = $this->_selectWriteService(true);
- } while ($service);
-
- return false;
- }
-
- /**
- * Create a delete document based on a query and submit it
- *
- * @param string $rawQuery
- * @param boolean $fromPending
- * @param boolean $fromCommitted
- * @param float $timeout Maximum expected duration of the delete operation on the server (otherwise, will throw a communication exception)
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function deleteByQuery($rawQuery, $fromPending = true, $fromCommitted = true, $timeout = 3600)
- {
- $service = $this->_selectWriteService();
-
- do
- {
- try
- {
- return $service->deleteByQuery($rawQuery, $fromPending, $fromCommitted, $timeout);
- }
- catch (Apache_Solr_HttpTransportException $e)
- {
- if ($e->getCode() != 0) //IF NOT COMMUNICATION ERROR
- {
- throw $e;
- }
- }
-
- $service = $this->_selectWriteService(true);
- } while ($service);
-
- return false;
- }
-
- /**
- * Use Solr Cell to extract document contents. See {@link http://wiki.apache.org/solr/ExtractingRequestHandler} for information on how
- * to use Solr Cell and what parameters are available.
- *
- * NOTE: when passing an Apache_Solr_Document instance, field names and boosts will automatically be prepended by "literal." and "boost."
- * as appropriate. Any keys from the $params array will NOT be treated this way. Any mappings from the document will overwrite key / value
- * pairs in the params array if they have the same name (e.g. you pass a "literal.id" key and value in your $params array but you also
- * pass in a document isntance with an "id" field" - the document's value(s) will take precedence).
- *
- * @param string $file Path to file to extract data from
- * @param array $params optional array of key value pairs that will be sent with the post (see Solr Cell documentation)
- * @param Apache_Solr_Document $document optional document that will be used to generate post parameters (literal.* and boost.* params)
- * @param string $mimetype optional mimetype specification (for the file being extracted)
- *
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_InvalidArgumentException if $file, $params, or $document are invalid.
- */
- public function extract($file, $params = array(), $document = null, $mimetype = 'application/octet-stream')
- {
- $service = $this->_selectWriteService();
-
- do
- {
- try
- {
- return $service->extract($file, $params, $document, $mimetype);
- }
- catch (Apache_Solr_HttpTransportException $e)
- {
- if ($e->getCode() != 0) //IF NOT COMMUNICATION ERROR
- {
- throw $e;
- }
- }
-
- $service = $this->_selectWriteService(true);
- } while ($service);
-
- return false;
- }
-
- /**
- * Use Solr Cell to extract document contents. See {@link http://wiki.apache.org/solr/ExtractingRequestHandler} for information on how
- * to use Solr Cell and what parameters are available.
- *
- * NOTE: when passing an Apache_Solr_Document instance, field names and boosts will automatically be prepended by "literal." and "boost."
- * as appropriate. Any keys from the $params array will NOT be treated this way. Any mappings from the document will overwrite key / value
- * pairs in the params array if they have the same name (e.g. you pass a "literal.id" key and value in your $params array but you also
- * pass in a document isntance with an "id" field" - the document's value(s) will take precedence).
- *
- * @param string $data Data that will be passed to Solr Cell
- * @param array $params optional array of key value pairs that will be sent with the post (see Solr Cell documentation)
- * @param Apache_Solr_Document $document optional document that will be used to generate post parameters (literal.* and boost.* params)
- * @param string $mimetype optional mimetype specification (for the file being extracted)
- *
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_InvalidArgumentException if $file, $params, or $document are invalid.
- *
- * @todo Should be using multipart/form-data to post parameter values, but I could not get my implementation to work. Needs revisisted.
- */
- public function extractFromString($data, $params = array(), $document = null, $mimetype = 'application/octet-stream')
- {
- $service = $this->_selectWriteService();
-
- do
- {
- try
- {
- return $service->extractFromString($data, $params, $document, $mimetype);
- }
- catch (Apache_Solr_HttpTransportException $e)
- {
- if ($e->getCode() != 0) //IF NOT COMMUNICATION ERROR
- {
- throw $e;
- }
- }
-
- $service = $this->_selectWriteService(true);
- } while ($service);
-
- return false;
- }
-
- /**
- * Send an optimize command. Will be synchronous unless both wait parameters are set
- * to false.
- *
- * @param boolean $waitFlush
- * @param boolean $waitSearcher
- * @param float $timeout Maximum expected duration of the optimize operation on the server (otherwise, will throw a communication exception)
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function optimize($waitFlush = true, $waitSearcher = true, $timeout = 3600)
- {
- $service = $this->_selectWriteService();
-
- do
- {
- try
- {
- return $service->optimize($waitFlush, $waitSearcher, $timeout);
- }
- catch (Apache_Solr_HttpTransportException $e)
- {
- if ($e->getCode() != 0) //IF NOT COMMUNICATION ERROR
- {
- throw $e;
- }
- }
-
- $service = $this->_selectWriteService(true);
- } while ($service);
-
- return false;
- }
-
- /**
- * Simple Search interface
- *
- * @param string $query The raw query string
- * @param int $offset The starting offset for result documents
- * @param int $limit The maximum number of result documents to return
- * @param array $params key / value pairs for query parameters, use arrays for multivalued parameters
- * @param string $method The HTTP method (Apache_Solr_Service::METHOD_GET or Apache_Solr_Service::METHOD::POST)
- * @return Apache_Solr_Response
- *
- * @throws Apache_Solr_HttpTransportException If an error occurs during the service call
- */
- public function search($query, $offset = 0, $limit = 10, $params = array(), $method = Apache_Solr_Service::METHOD_GET)
- {
- $service = $this->_selectReadService();
-
- do
- {
- try
- {
- return $service->search($query, $offset, $limit, $params, $method);
- }
- catch (Apache_Solr_HttpTransportException $e)
- {
- if ($e->getCode() != 0) //IF NOT COMMUNICATION ERROR
- {
- throw $e;
- }
- }
-
- $service = $this->_selectReadService(true);
- } while ($service);
-
- return false;
- }
-}
diff --git a/SolrPhpClient/COPYING b/SolrPhpClient/COPYING
deleted file mode 100644
index 01522fb1..00000000
--- a/SolrPhpClient/COPYING
+++ /dev/null
@@ -1,26 +0,0 @@
-Copyright (c) 2007-2011, Servigistics, Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-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.
diff --git a/SolrPhpClient/ChangeLog b/SolrPhpClient/ChangeLog
deleted file mode 100644
index 030e40d5..00000000
--- a/SolrPhpClient/ChangeLog
+++ /dev/null
@@ -1,342 +0,0 @@
-2011-02-08 20:38 donovan.jimenez
-
- * Apache/Solr/Service.php, tests/Apache/Solr/ServiceTest.php: See
- issue #59 - Adding service extractFromUrl method. This will use
- the configured HTTP transport to request the resource. extract
- has been modified to detect a file path that starts with http /
- https and to defer to extractFromUrl instead. Also, moved
- checking for params parameter to the top of method bodies so we
- can fail earlier rather than after we've gotten a file / url's
- content.
-
-2011-02-08 19:28 donovan.jimenez
-
- * Apache/Solr/Service.php, tests/Apache/Solr/ServiceTest.php: See
- issue #43 - Changing optimize parameter of service's commit
- method to its correct name: expungeDeletes. Also harded php unit
- tests around commit.
-
- thanks to Liam O'Boyle and Olivier Ricordeau for patches for this
- commit and the previous one for issue #51
-
-2011-02-08 19:11 donovan.jimenez
-
- * Apache/Solr/Service.php, tests/Apache/Solr/ServiceTest.php: See
- issue #51 - adding commitWithin parameter to addDocument and
- addDocuments. Also hardened php unit tests for this functions
-
-2011-02-04 16:29 donovan.jimenez
-
- * Apache/Solr/Document.php, Apache/Solr/Exception.php,
- Apache/Solr/HttpTransport/Abstract.php,
- Apache/Solr/HttpTransport/Curl.php,
- Apache/Solr/HttpTransport/CurlNoReuse.php,
- Apache/Solr/HttpTransport/FileGetContents.php,
- Apache/Solr/HttpTransport/Interface.php,
- Apache/Solr/HttpTransport/Response.php,
- Apache/Solr/HttpTransportException.php,
- Apache/Solr/InvalidArgumentException.php,
- Apache/Solr/NoServiceAvailableException.php,
- Apache/Solr/ParserException.php, Apache/Solr/Response.php,
- Apache/Solr/Service.php, Apache/Solr/Service/Balancer.php,
- COPYING, tests/Apache/Solr/DocumentTest.php,
- tests/Apache/Solr/HttpTransport/AbstractTest.php,
- tests/Apache/Solr/HttpTransport/CurlNoReuseTest.php,
- tests/Apache/Solr/HttpTransport/CurlTest.php,
- tests/Apache/Solr/HttpTransport/FileGetContentsTest.php,
- tests/Apache/Solr/HttpTransport/ResponseTest.php,
- tests/Apache/Solr/HttpTransportExceptionTest.php,
- tests/Apache/Solr/ResponseTest.php,
- tests/Apache/Solr/Service/BalancerTest.php,
- tests/Apache/Solr/ServiceAbstractTest.php,
- tests/Apache/Solr/ServiceTest.php: Updating licence and copyright
- texts in sources to reflect transition from Conduit IT to
- Servigistics
-
-2010-11-02 20:16 donovan.jimenez
-
- * Apache/Solr/Service.php, Apache/Solr/Service/Balancer.php,
- tests/Apache/Solr/ServiceAbstractTest.php,
- tests/Apache/Solr/ServiceTest.php: See issue #55
- * Adding an Apache_Solr_Service::extractFromString method
- * Adding Apache_Solr_Service_Balancer::extract and
- Apache_Solr_Service_Balancer::extractFromString methods
-
-2010-10-21 15:23 donovan.jimenez
-
- * ., Apache/Solr/HttpTransport,
- Apache/Solr/HttpTransport/Abstract.php,
- Apache/Solr/HttpTransport/Curl.php,
- Apache/Solr/HttpTransport/CurlNoReuse.php,
- Apache/Solr/HttpTransport/FileGetContents.php,
- Apache/Solr/HttpTransport/Interface.php,
- Apache/Solr/HttpTransport/Response.php, Apache/Solr/Response.php,
- Apache/Solr/Service.php, Apache/Solr/Service/Balancer.php,
- COPYING, tests/Apache/Solr/DocumentTest.php,
- tests/Apache/Solr/HttpTransport,
- tests/Apache/Solr/HttpTransport/AbstractTest.php,
- tests/Apache/Solr/HttpTransport/CurlNoReuseTest.php,
- tests/Apache/Solr/HttpTransport/CurlTest.php,
- tests/Apache/Solr/HttpTransport/FileGetContentsTest.php,
- tests/Apache/Solr/HttpTransport/ResponseTest.php,
- tests/Apache/Solr/HttpTransportExceptionTest.php,
- tests/Apache/Solr/ResponseTest.php,
- tests/Apache/Solr/Service/BalancerTest.php,
- tests/Apache/Solr/Service/TestAll.php,
- tests/Apache/Solr/ServiceAbstractTest.php,
- tests/Apache/Solr/ServiceTest.php, tests/Apache/Solr/TestAll.php,
- tests/phpunit.bootstrap.inc, tests/phpunit.xml, tests/run.php:
- Merging the http_requests branch into trunk
-
- See issue #49 - Service can now have the way it makes HTTP
- requests plugged in.
- The only requirement is that the plugin implement the new
- Apache_Solr_HttpTransport_Interface. There are initial
- implementations for using
- file_get_contents (what was used previously) and for using the
- curl module. Much
- thanks to Timo Schmidt for submitting an initial patch.
-
- If the user does not specifically provide a transport interface
- instance, the
- file get contents implementation will be used by default.
-
- There is a compatibility breaking change on the
- Apache_Solr_Response
- constructor. The Signature has changed.
-
- The getDefaultTimeout and setDefaultTimeout methods on the
- Apache_Solr_Service
- class are now deprecated. They simple pass through to the active
- transport's
- methods of the same name, and I'd rather the user manage it
- there.
-
- Additionally, I have cleaned up and expanded the existing unit
- tests - had to
- change tests related to the breaking change, and added new ones
- for the new
- classes as well as expanding existing ones. They should now all
- pass. curl tests
- should only run if the curl module is enabled. file get contents
- tests should
- only run if allow_url_fopen is enabled. transport tests do rely
- on an internet
- connection at this time.
-
-2010-09-07 14:44 donovan.jimenez
-
- * Apache/Solr/Document.php: See issue #48, doing an isset check as
- part of the magic get. Return null if not.
-
-2010-09-07 14:34 donovan.jimenez
-
- * Apache/Solr/Service.php: See issue #47, adding missing argument
- to getFieldBoost call in Apache_Solr_Service::extract method
-
-2010-07-08 22:35 donovan.jimenez
-
- * Apache/Solr/Service.php: See issue #37 - adding a getter /
- setting for the default timeout value. Still initially populated
- with the default_socket_timeout ini setting
-
-2010-07-08 22:21 donovan.jimenez
-
- * Apache/Solr/Service.php: See issue #42 - Adding missing require
- once for ParserException
-
-2010-04-24 00:44 donovan.jimenez
-
- * Apache/Solr/HttpTransportException.php, Apache/Solr/Service.php:
- See issue #38 - Adding support for Solr Cell (tika) extraction
- handler. Thanks to Liam O'Boyle for original patch.
-
-2010-03-22 23:10 donovan.jimenez
-
- * Apache/Solr/Service.php: See Issue #39 - send charset for POST
- form encoded data so that the servlet container for solr will
- interpret data correctly (will usually default to latin1)
-
-2010-03-22 23:06 donovan.jimenez
-
- * Apache/Solr/Service.php: Resolving Issue #40 - when using php
- with all error output or using a code analyzer, the
- http_response_header variable looks as though it won't be
- initialized before being used. Initializing it to null to
- alleviate the emitted warning.
-
-2010-03-10 00:28 donovan.jimenez
-
- * tests, tests/Apache, tests/Apache/Solr,
- tests/Apache/Solr/DocumentTest.php,
- tests/Apache/Solr/ResponseTest.php, tests/Apache/Solr/Service,
- tests/Apache/Solr/Service/BalancerTest.php,
- tests/Apache/Solr/Service/TestAll.php,
- tests/Apache/Solr/ServiceTest.php, tests/Apache/Solr/TestAll.php,
- tests/README, tests/phpunit.bootstrap.inc, tests/phpunit.xml,
- tests/run.php: Adding some very dusty unit tests. They are not
- complete, and some recent API changes may not be reflected in
- them, but they are a start.
-
-2010-02-20 00:01 donovan.jimenez
-
- * Apache/Solr/Service/Balancer.php: See Issue #34 - synchronizing
- Apache_Solr_Service_Balancer public methods with changes in
- Apache_Solr_Service. Specifically, adding some missing optional
- timeout parameters and adding the new deleteByMultipleIds method
-
-2010-02-19 23:47 donovan.jimenez
-
- * Apache/Solr/Response.php: See Issue #35 - implementing __isset
- magic method on Apache_Solr_Response
-
-2010-02-19 23:36 donovan.jimenez
-
- * Apache/Solr/Document.php, Apache/Solr/Exception.php,
- Apache/Solr/HttpTransportException.php,
- Apache/Solr/InvalidArgumentException.php,
- Apache/Solr/NoServiceAvailableException.php,
- Apache/Solr/ParserException.php, Apache/Solr/Response.php,
- Apache/Solr/Service.php, Apache/Solr/Service/Balancer.php: See
- Issue #36 - fix usage of generic exceptions, thanks to dennis
- vierkant for the patch.
-
-2009-12-10 03:51 donovan.jimenez
-
- * Apache/Solr/Service.php: Fixes issue #28 - Fixes typo in
- setNamedListTreatment function name. Thanks to alex dunae
-
-2009-12-10 03:49 donovan.jimenez
-
- * Apache/Solr/Response.php: Fixes issue #27 - when parsing the JSON
- data, add a check for null so we can throw an exception if the
- response seems to be invalid. Thanks to thomas rabaix for the
- suggestion.
-
-2009-11-21 02:07 donovan.jimenez
-
- * Apache/Solr/Service.php: see issue #23 - removing unused (by Sorl
- JSON writer) and incorrect (version did not track with Solr
- version) version parameter from all requests
-
-2009-11-21 02:02 donovan.jimenez
-
- * Apache/Solr/Service.php: Fixes #26 - Do a php version check
- against 5.1.3 to determine whether brackets will be url encoded
- by http_build_query function. Depending on the result of the
- version check use the proper regex for fixing up the query string
- before passing it to Solr
-
-2009-11-09 22:46 donovan.jimenez
-
- * Apache/Solr/Service.php: Fixes #20 - in previous fix, used
- stream_context_set_params when I should have used
- stream_context_set_option
-
-2009-11-09 22:08 donovan.jimenez
-
- * Apache/Solr/Service.php: Fixes #20 - Reusing a get and post
- context for each request instead of creating a new stream context
- for each. PHP does not provide a function to delete created
- stream contexts and does not appear to clean them up when they go
- out of scope, which leads to high memory usage when many solr
- requests were issued (typically in indexing usage)
-
-2009-11-09 21:32 donovan.jimenez
-
- * Apache/Solr/Service.php: Fixes #21 - Adding method to delete by
- multiple IDs. Thanks to pwolanin
-
-2009-08-12 14:08 donovan.jimenez
-
- * Apache/Solr/Response.php: The split function is deprecated as of
- PHP 5.3. Furthermore, since none of my split's were using a regex
- it is better to use explode anyway. Fixes #19
-
-2009-08-04 18:23 donovan.jimenez
-
- * Apache/Solr/Response.php, Apache/Solr/Service.php: Removed todo's
- about investigating Serialized PHP and PHP output writer usage.
- I've made the decision to stick to usage of JSON output writer
- until it can be proven that the other output writers are more
- stable or provide a substantially faster implementation. Closes
- issue #6
-
-2009-08-04 17:53 donovan.jimenez
-
- * Apache/Solr/Document.php, Apache/Solr/Response.php,
- Apache/Solr/Service.php, Apache/Solr/Service/Balancer.php: Adding
- useful SVN metadata constants to each Apache_Solr class by svn
- keyword substitution. Fixes issue #16
-
-2009-08-04 17:14 donovan.jimenez
-
- * Apache/Solr/Service.php: Fixes issue #5 - Applying patch (with
- minor changes) from mkalkbrenner to replace all control
- characters in Apache_Solr_Document keys / values with spaces to
- avoid an exception from Solr's XML Parser.
-
-2009-07-20 14:14 donovan.jimenez
-
- * Apache/Solr/Service.php: See issue #14
- * adding timeout parameters to all delete functions
-
-2009-05-11 14:51 donovan.jimenez
-
- * Apache/Solr/Service.php: See issue #8
- * Adding the ability to specify the HTTP method used for sending
- a search query (GET or POST)
-
-2009-03-12 03:46 donovan.jimenez
-
- * Apache/Solr/Service.php: See
- http://code.google.com/p/solr-php-client/issues/detail?id=4
- * Reworking Service::ping() to just use file_get_contents URL
- wrappers like we do for other GET's and POST operations
- * Reworked Service::_sendRawGet() and Service::_sendRawPost() to
- create a new stream context each time. Used for controlled
- request timeouts, headers, and POST information
-
-2009-01-29 00:49 donovan.jimenez
-
- * Apache/Solr/Document.php: See
- http://code.google.com/p/solr-php-client/issues/detail?id=2
-
- Attempting to fix null vs. false boost parameter value issue by
- always casting to float value first.
-
- Needs tested.
-
-2009-01-28 17:11 donovan.jimenez
-
- * Apache/Solr/Service.php, Apache/Solr/Service/Balancer.php: See
- http://code.google.com/p/solr-php-client/issues/detail?id=1
-
- Changed require_once statements that expected the Solr Client
- library to be on the include path into statements that use the
- __FILE__ magic constant to do them as absolute paths. This should
- get rid of the requirement for the user to change their include
- path configuration or add the library to the include path at
- runtime.
-
- Provided as a convenience for the user.
-
-
-2009-01-22 04:01 donovan.jimenez
-
- * Apache/Solr/Document.php, Apache/Solr/Response.php,
- Apache/Solr/Service.php, Apache/Solr/Service/Balancer.php,
- COPYING: Updating license to New BSD for google code hosting.
- Also updating copyright message
-
-2009-01-21 23:50 donovan.jimenez
-
- * Apache, Apache/Solr, Apache/Solr/Document.php,
- Apache/Solr/Response.php, Apache/Solr/Service,
- Apache/Solr/Service.php, Apache/Solr/Service/Balancer.php:
- Importing Solr PHP client from last released zip file
-
-2008-11-26 00:26
-
- * .: Initial directory structure.
-
diff --git a/SolrPhpClient/phpdocs/Apache/Solr/Apache_Solr_Document.html b/SolrPhpClient/phpdocs/Apache/Solr/Apache_Solr_Document.html
deleted file mode 100644
index dd3ec0b3..00000000
--- a/SolrPhpClient/phpdocs/Apache/Solr/Apache_Solr_Document.html
+++ /dev/null
@@ -1,901 +0,0 @@
-
-
-
-
-
- Docs For Class Apache_Solr_Document
-
-
-
-
-
Holds Key / Value pairs that represent a Solr Document along with any associated boost values. Field values can be accessed by direct dereferencing such as:
NOTE: the solr XML format allows you to specify boosts PER value even though the underlying Lucene implementation only allows a boost per field. To remedy this, the final field boost value will be the product of all specified boosts on field values - this is similar to SolrJ's functionality.
Set a field value. Multi-valued fields should be set as arrays or instead use the addField(...) function which will automatically make sure the field is an array.
Magic set for field values. Multi-valued fields should be set as arrays or instead use the addField(...) function which will automatically make sure the field is an array.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
- An alternative Curl HTTP transport that opens and closes a curl session for every request. This isn't the recommended way to use curl, but some version of PHP have memory issues.
-
An alternative Curl HTTP transport that opens and closes a curl session for every request. This isn't the recommended way to use curl, but some version of PHP have memory issues.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
Represents a Solr response. Parses the raw response into a set of stdClass objects and associative arrays for easy access.
-
Currently requires json_decode which is bundled with PHP >= 5.2.0, Alternatively can be installed with PECL. Zend Framework also includes a purely PHP solution.
Starting point for the Solr API. Represents a Solr server resource and has methods for pinging, adding, deleting, committing, optimizing and searching.
-
Example Usage:
...
-
$solr = new Apache_Solr_Service(); //or explicitly new Apache_Solr_Service('localhost', 8180, '/solr')
todo: Investigate using other HTTP clients other than file_get_contents built-in handler. Could provide performance improvements when dealing with multiple requests by using HTTP's keep alive functionality
- integer
- $commitWithin: The number of milliseconds that a document must be committed within, see @{link http://wiki.apache.org/solr/UpdateXmlMessages#The_Update_Schema} for details. If left empty this property will not be set in the request.
- array
- $documents: Should be an array of Apache_Solr_Document instances
-
- boolean
- $allowDups
-
- boolean
- $overwritePending
-
- boolean
- $overwriteCommitted
-
- integer
- $commitWithin: The number of milliseconds that a document must be committed within, see @{link http://wiki.apache.org/solr/UpdateXmlMessages#The_Update_Schema} for details. If left empty this property will not be set in the request.
- boolean
- $expungeDeletes: Defaults to false, merge segments with deletes away
-
- boolean
- $waitFlush: Defaults to true, block until index changes are flushed to disk
-
- boolean
- $waitSearcher: Defaults to true, block until a new searcher is opened and registered as the main query searcher, making the changes visible
-
- float
- $timeout: Maximum expected duration (in seconds) of the commit operation on the server (otherwise, will throw a communication exception). Defaults to 1 hour
NOTE: when passing an Apache_Solr_Document instance, field names and boosts will automatically be prepended by "literal." and "boost." as appropriate. Any keys from the $params array will NOT be treated this way. Any mappings from the document will overwrite key / value pairs in the params array if they have the same name (e.g. you pass a "literal.id" key and value in your $params array but you also pass in a document isntance with an "id" field" - the document's value(s) will take precedence).
-
-
throws: Apache_Solr_InvalidArgumentException if $file, $params, or $document are invalid.
NOTE: when passing an Apache_Solr_Document instance, field names and boosts will automatically be prepended by "literal." and "boost." as appropriate. Any keys from the $params array will NOT be treated this way. Any mappings from the document will overwrite key / value pairs in the params array if they have the same name (e.g. you pass a "literal.id" key and value in your $params array but you also pass in a document isntance with an "id" field" - the document's value(s) will take precedence).
-
-
todo: Should be using multipart/form-data to post parameter values, but I could not get my implementation to work. Needs revisisted.
-
throws: Apache_Solr_InvalidArgumentException if $file, $params, or $document are invalid.
NOTE: when passing an Apache_Solr_Document instance, field names and boosts will automatically be prepended by "literal." and "boost." as appropriate. Any keys from the $params array will NOT be treated this way. Any mappings from the document will overwrite key / value pairs in the params array if they have the same name (e.g. you pass a "literal.id" key and value in your $params array but you also pass in a document isntance with an "id" field" - the document's value(s) will take precedence).
-
-
throws: Apache_Solr_InvalidArgumentException if $url, $params, or $document are invalid.
- int
- $offset: The starting offset for result documents
-
- int
- $limit: The maximum number of result documents to return
-
- array
- $params: key / value pairs for other query parameters (see Solr documentation), use arrays for parameter keys used more than once (e.g. facet.field)
-
- string
- $method: The HTTP method (Apache_Solr_Service::METHOD_GET or Apache_Solr_Service::METHOD::POST)
NOTE: when passing an Apache_Solr_Document instance, field names and boosts will automatically be prepended by "literal." and "boost." as appropriate. Any keys from the $params array will NOT be treated this way. Any mappings from the document will overwrite key / value pairs in the params array if they have the same name (e.g. you pass a "literal.id" key and value in your $params array but you also pass in a document isntance with an "id" field" - the document's value(s) will take precedence).
-
-
throws: Apache_Solr_InvalidArgumentException if $file, $params, or $document are invalid.
NOTE: when passing an Apache_Solr_Document instance, field names and boosts will automatically be prepended by "literal." and "boost." as appropriate. Any keys from the $params array will NOT be treated this way. Any mappings from the document will overwrite key / value pairs in the params array if they have the same name (e.g. you pass a "literal.id" key and value in your $params array but you also pass in a document isntance with an "id" field" - the document's value(s) will take precedence).
-
-
todo: Should be using multipart/form-data to post parameter values, but I could not get my implementation to work. Needs revisisted.
-
throws: Apache_Solr_InvalidArgumentException if $file, $params, or $document are invalid.
Iterate through available write services and select the first with a ping
-
that satisfies configured timeout restrictions (or the default). The timeout period will increase until a connection is made or the limit is reached. This will allow for increased reliability with heavily loaded server(s).
-
-
throws: Apache_Solr_NoServiceAvailableException If there are no write services that meet requirements
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
- Holds Key / Value pairs that represent a Solr Document along with any associated boost values. Field values can be accessed by direct dereferencing such as:
-
-
-
-
-
-
-
-
-
-
-
- Documentation generated on Wed, 04 May 2011 11:01:13 -0400 by phpDocumentor 1.4.3
-
-
-
\ No newline at end of file
diff --git a/SolrPhpClient/phpdocs/Apache/Solr/_Exception.php.html b/SolrPhpClient/phpdocs/Apache/Solr/_Exception.php.html
deleted file mode 100644
index c6cef5e8..00000000
--- a/SolrPhpClient/phpdocs/Apache/Solr/_Exception.php.html
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
- Docs for page Exception.php
-
-
-
-
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
- An alternative Curl HTTP transport that opens and closes a curl session for every request. This isn't the recommended way to use curl, but some version of PHP have memory issues.
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
Neither the name of Servigistics, Inc. nor the names of
- its contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 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.
-
- Starting point for the Solr API. Represents a Solr server resource and has methods for pinging, adding, deleting, committing, optimizing and searching.
-
* @param integer $commitWithin The number of milliseconds that a document must be committed within, see @{link http://wiki.apache.org/solr/UpdateXmlMessages#The_Update_Schema} for details. If left empty this property will not be set in the request.
-
* @return Apache_Solr_Response
-
*
-
* @throws Apache_Solr_HttpTransportException If an error occurs during the service call
-
*/
-
public function addDocument(Apache_Solr_Document $document, $allowDups = false, $overwritePending = true, $overwriteCommitted = true, $commitWithin = 0)
* Add an array of Solr Documents to the index all at once
-
*
-
* @param array $documents Should be an array of Apache_Solr_Document instances
-
* @param boolean $allowDups
-
* @param boolean $overwritePending
-
* @param boolean $overwriteCommitted
-
* @param integer $commitWithin The number of milliseconds that a document must be committed within, see @{link http://wiki.apache.org/solr/UpdateXmlMessages#The_Update_Schema} for details. If left empty this property will not be set in the request.
-
* @return Apache_Solr_Response
-
*
-
* @throws Apache_Solr_HttpTransportException If an error occurs during the service call
-
*/
-
public function addDocuments($documents, $allowDups = false, $overwritePending = true, $overwriteCommitted = true, $commitWithin = 0)
* Send a commit command. Will be synchronous unless both wait parameters are set to false.
-
*
-
* @param boolean $expungeDeletes Defaults to false, merge segments with deletes away
-
* @param boolean $waitFlush Defaults to true, block until index changes are flushed to disk
-
* @param boolean $waitSearcher Defaults to true, block until a new searcher is opened and registered as the main query searcher, making the changes visible
-
* @param float $timeout Maximum expected duration (in seconds) of the commit operation on the server (otherwise, will throw a communication exception). Defaults to 1 hour
-
* @return Apache_Solr_Response
-
*
-
* @throws Apache_Solr_HttpTransportException If an error occurs during the service call
-
*/
-
public function commit($expungeDeletes = false, $waitFlush = true, $waitSearcher = true, $timeout = 3600)
* @param int $offset The starting offset for result documents
-
* @param int $limit The maximum number of result documents to return
-
* @param array $params key / value pairs for other query parameters (see Solr documentation), use arrays for parameter keys used more than once (e.g. facet.field)
-
* @param string $method The HTTP method (Apache_Solr_Service::METHOD_GET or Apache_Solr_Service::METHOD::POST)
-
* @return Apache_Solr_Response
-
*
-
* @throws Apache_Solr_HttpTransportException If an error occurs during the service call
-
* @throws Apache_Solr_InvalidArgumentException If an invalid HTTP method is used
-
*/
-
public function search($query, $offset = 0, $limit = 10, $params = array(), $method = self::METHOD_GET)
Holds Key / Value pairs that represent a Solr Document along with any associated boost values. Field values can be accessed by direct dereferencing such as:
An alternative Curl HTTP transport that opens and closes a curl session for every request. This isn't the recommended way to use curl, but some version of PHP have memory issues.
Starting point for the Solr API. Represents a Solr server resource and has methods for pinging, adding, deleting, committing, optimizing and searching.
Set a field value. Multi-valued fields should be set as arrays or instead use the addField(...) function which will automatically make sure the field is an array.
Magic set for field values. Multi-valued fields should be set as arrays or instead use the addField(...) function which will automatically make sure the field is an array.
Magic set for field values. Multi-valued fields should be set as arrays or instead use the addField(...) function which will automatically make sure the field is an array.
Holds Key / Value pairs that represent a Solr Document along with any associated boost values. Field values can be accessed by direct dereferencing such as:
An alternative Curl HTTP transport that opens and closes a curl session for every request. This isn't the recommended way to use curl, but some version of PHP have memory issues.
Starting point for the Solr API. Represents a Solr server resource and has methods for pinging, adding, deleting, committing, optimizing and searching.
Set a field value. Multi-valued fields should be set as arrays or instead use the addField(...) function which will automatically make sure the field is an array.
-Warning on line 43 - no @package tag was used in a DocBlock for class Apache_Solr_HttpTransport_Abstract
-
-
Balancer.php
-
Warnings:
-Warning on line 40 - Page-level DocBlock precedes "require_once dirname(dirname(__FILE__)).'/Service.php'", use another DocBlock to document the source element
-Warning on line 51 - no @package tag was used in a DocBlock for class Apache_Solr_Service_Balancer
-
-
Curl.php
-
Warnings:
-Warning on line 39 - Page-level DocBlock precedes "require_once dirname(__FILE__).'/Abstract.php'", use another DocBlock to document the source element
-Warning on line 45 - no @package tag was used in a DocBlock for class Apache_Solr_HttpTransport_Curl
-
-
CurlNoReuse.php
-
Warnings:
-Warning on line 39 - Page-level DocBlock precedes "require_once dirname(__FILE__).'/Abstract.php'", use another DocBlock to document the source element
-Warning on line 47 - no @package tag was used in a DocBlock for class Apache_Solr_HttpTransport_CurlNoReuse
-
-
Document.php
-
Warnings:
-Warning on line 58 - no @package tag was used in a DocBlock for class Apache_Solr_Document
-
Errors:
-Error on line 57 - Unclosed code tag in DocBlock, parsing will be incorrect
-
-
Exception.php
-
Warnings:
-Warning on line 39 - DocBlock would be page-level, but precedes class "Apache_Solr_Exception", use another DocBlock to document the file
-
-
FileGetContents.php
-
Warnings:
-Warning on line 39 - Page-level DocBlock precedes "require_once dirname(__FILE__).'/Abstract.php'", use another DocBlock to document the source element
-Warning on line 45 - no @package tag was used in a DocBlock for class Apache_Solr_HttpTransport_FileGetContents
-
-
HttpTransportException.php
-
Warnings:
-Warning on line 39 - DocBlock would be page-level, but precedes class "Apache_Solr_HttpTransportException", use another DocBlock to document the file
-
-
Interface.php
-
Warnings:
-Warning on line 39 - Page-level DocBlock precedes "require_once dirname(__FILE__).'/Response.php'", use another DocBlock to document the source element
-Warning on line 47 - no @package tag was used in a DocBlock for interface Apache_Solr_HttpTransport_Interface
-
-
InvalidArgumentException.php
-
Warnings:
-Warning on line 39 - DocBlock would be page-level, but precedes class "Apache_Solr_InvalidArgumentException", use another DocBlock to document the file
-
-
NoServiceAvailableException.php
-
Warnings:
-Warning on line 39 - DocBlock would be page-level, but precedes class "Apache_Solr_NoServiceAvailableException", use another DocBlock to document the file
-
-
ParserException.php
-
Warnings:
-Warning on line 39 - DocBlock would be page-level, but precedes class "Apache_Solr_ParserException", use another DocBlock to document the file
-
-
Response.php
-
Warnings:
-Warning on line 38 - Page-level DocBlock precedes "require_once dirname(__FILE__).'/ParserException.php'", use another DocBlock to document the source element
-Warning on line 44 - no @package tag was used in a DocBlock for class Apache_Solr_HttpTransport_Response
-Warning on line 48 - no @package tag was used in a DocBlock for class Apache_Solr_Response
-
-
Service.php
-
Warnings:
-Warning on line 40 - Page-level DocBlock precedes "require_once dirname(__FILE__).'/Exception.php'", use another DocBlock to document the source element
-Warning on line 86 - no @package tag was used in a DocBlock for class Apache_Solr_Service
-
- Documentation generated on Wed, 04 May 2011 11:01:19 -0400 by phpDocumentor 1.4.3
-
-
-
\ No newline at end of file
diff --git a/SolrPhpClient/phpdocs/index.html b/SolrPhpClient/phpdocs/index.html
deleted file mode 100644
index dd90e526..00000000
--- a/SolrPhpClient/phpdocs/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
- Generated Documentation
-
-
-
-
-
\ No newline at end of file
diff --git a/SolrPhpClient/phpdocs/li_Apache.html b/SolrPhpClient/phpdocs/li_Apache.html
deleted file mode 100644
index 9b6e2b6e..00000000
--- a/SolrPhpClient/phpdocs/li_Apache.html
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
Investigate using other HTTP clients other than file_get_contents built-in handler. Could provide performance improvements when dealing with multiple requests by using HTTP's keep alive functionality