PHP Conference Japan 2024

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,其功能相同,但布林旗標正好相反。

$allowDups = false 與 $overwrite = true 相同

commitWithin

自動提交此文件的毫秒數。Solr 1.4 起可用。預設值 (0) 表示停用。

當指定此值時,會將何時提交的控制權留給 Solr 本身,將提交次數最佳化至最少,同時仍滿足更新延遲要求,並且當緩衝區中最舊的新增到期時,Solr 會自動執行提交。

回傳值

傳回 SolrUpdateResponse 物件,或在失敗時擲回例外。

錯誤/例外

如果用戶端失敗或發生連線問題,則擲回 SolrClientException

如果 Solr 伺服器處理請求失敗,則擲回 SolrServerException

範例

範例 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);

// 如果您沒有使用 $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');

// 因為傳遞了 $commitWithin,因此不需要呼叫 commit(),所以 Solr 伺服器將在 10 秒內自動提交
$updateResponse = $client->addDocument($doc, false, 10000);

print_r($updateResponse->getResponse());

?>

上述範例會輸出類似以下內容

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

)

參見

新增筆記

使用者貢獻筆記

此頁面尚無使用者貢獻筆記。
To Top