Apache Solr SolrClient::addDocument

(PECL solr >= 0.9.2)

SolrClient::addDocument — 색인에 문서를 추가합니다.


설명

public SolrClient::addDocument(SolrInputDocument $doc, bool $overwrite = true, int $commitWithin = 0): SolrUpdateResponse

이 메소드는 색인에 문서를 추가합니다.


매개변수

doc
SolrInputDocument 인스턴스.
overwrite
기존 문서를 덮어쓸지 여부입니다. false인 경우 중복됩니다(동일한 ID를 가진 여러 문서).

경고 PECL Solr < 2.0 $allowDups가 $overwrite 대신 사용되었습니다. 이것은 정확히 반대의 bool 플래그로 동일한 기능을 수행합니다.

$allowDups = false는 $overwrite = true와 동일합니다.

commitWithin
이 문서를 자동 커밋할 시간(밀리초)입니다. Solr 1.4부터 사용 가능. 기본값(0)은 비활성화됨을 의미합니다.

이 값을 지정하면 업데이트 대기 시간 요구 사항을 충족하면서 커밋 수를 최소로 최적화하여 Solr 자체에 커밋을 수행할 시기를 제어하고 Solr는 버퍼에서 가장 오래된 추가가 만기될 때 자동으로 커밋을 수행합니다.


반환 값

SolrUpdateResponse 개체를 반환하거나 실패 시 예외를 throw합니다.


오류/예외

클라이언트가 실패했거나 연결 문제가 있는 경우 SolrClientException을 던집니다.

Solr Server가 요청을 처리하는 데 실패한 경우 SolrServerException을 던집니다.


Examples

예제 #1 SolrClient::addDocument() 예제

                  
<?php

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');

$updateResponse = $client->addDocument($doc);

// you will have to commit changes to be written if you didn't use $commitWithin
$client->commit();

print_r($updateResponse->getResponse());

?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 1
        )

)
                

예제 #2 SolrClient::addDocument() 예제2

                  
<?php

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');

// No need to call commit() because $commitWithin is passed, so Solr Server will auto commit within 10 seconds
$updateResponse = $client->addDocument($doc, false, 10000);

print_r($updateResponse->getResponse());

?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 1
        )

)
                

기타