You are here

public function SolrConnectorPluginBase::update in Search API Solr 4.x

Same name and namespace in other branches
  1. 8.3 src/SolrConnector/SolrConnectorPluginBase.php \Drupal\search_api_solr\SolrConnector\SolrConnectorPluginBase::update()
  2. 8 src/SolrConnector/SolrConnectorPluginBase.php \Drupal\search_api_solr\SolrConnector\SolrConnectorPluginBase::update()
  3. 8.2 src/SolrConnector/SolrConnectorPluginBase.php \Drupal\search_api_solr\SolrConnector\SolrConnectorPluginBase::update()

Executes an update query and applies some tweaks.

Parameters

\Solarium\QueryType\Update\Query\Query $query: The Solarium update query object.

\Solarium\Core\Client\Endpoint|null $endpoint: (optional) The Solarium endpoint object.

Return value

\Solarium\Core\Query\Result\ResultInterface The Solarium result object.

Throws

\Drupal\search_api_solr\SearchApiSolrException

Overrides SolrConnectorInterface::update

1 call to SolrConnectorPluginBase::update()
StandardSolrCloudConnector::deleteCheckpoints in src/Plugin/SolrConnector/StandardSolrCloudConnector.php
Deletes all checkpoints for given index/site.

File

src/SolrConnector/SolrConnectorPluginBase.php, line 892

Class

SolrConnectorPluginBase
Defines a base class for Solr connector plugins.

Namespace

Drupal\search_api_solr\SolrConnector

Code

public function update(UpdateQuery $query, ?Endpoint $endpoint = NULL) {
  $this
    ->connect();
  if (!$endpoint) {
    $endpoint = $this->solr
      ->getEndpoint();
  }

  // The default timeout is set for search queries. The configured timeout
  // might differ and needs to be set now because solarium doesn't
  // distinguish between these types.
  $this
    ->useTimeout(self::INDEX_TIMEOUT, $endpoint);
  if ($this->configuration['commit_within']) {

    // Do a commitWithin since that is automatically a softCommit since Solr 4
    // and a delayed hard commit with Solr 3.4+.
    // By default we wait 1 second after the request arrived for solr to parse
    // the commit. This allows us to return to Drupal and let Solr handle what
    // it needs to handle.
    // @see http://wiki.apache.org/solr/NearRealtimeSearch

    /** @var \Solarium\Plugin\CustomizeRequest\CustomizeRequest $request */
    $request = $this
      ->customizeRequest();
    if (!$request
      ->getCustomization('commitWithin')) {
      $request
        ->createCustomization('commitWithin')
        ->setType('param')
        ->setName('commitWithin')
        ->setValue($this->configuration['commit_within']);
    }
  }
  return $this
    ->execute($query, $endpoint);
}