• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • SolrInputDocument::addChildDocument()

    (PECL solr >= 2.3.0)

    Adds a child document for block indexing

    说明

    publicSolrInputDocument::addChildDocument(SolrInputDocument$child): void

    Adds a child document to construct a document block with nested documents.

    参数

    $child

    A SolrInputDocument object.

    错误/异常

    Throws SolrIllegalArgumentException on failure.

    Throws SolrException on internal failure.

    返回值

    范例

    Example #1 SolrInputDocument::addChildDocument() example

    <?php
    include "bootstrap.php";
    $options = array
    (
        'hostname' => SOLR_SERVER_HOSTNAME,
        'login'    => SOLR_SERVER_USERNAME,
        'password' => SOLR_SERVER_PASSWORD,
        'port'     => SOLR_SERVER_PORT,
        'path'     => SOLR_SERVER_STORE_PATH,
    );
    $client = new SolrClient($options);
    $product = new SolrInputDocument();
    $product->addField('id', 'P-BLACK');
    $product->addField('cat', 'tshirt');
    $product->addField('cat', 'polo');
    $product->addField('content_type', 'product');
    $small = new SolrInputDocument();
    $small->addField('id', 'TS-BLK-S');
    $small->addField('content_type', 'sku');
    $small->addField('size', 'S');
    $small->addField('inventory', 100);
    $medium = new SolrInputDocument();
    $medium->addField('id', 'TS-BLK-M');
    $medium->addField('content_type', 'sku');
    $medium->addField('size', 'M');
    $medium->addField('inventory', 200);
    $large = new SolrInputDocument();
    $large->addField('id', 'TS-BLK-L');
    $large->addField('content_type', 'sku');
    $large->addField('size', 'L');
    $large->addField('inventory', 300);
    // add child documents 
    $product->addChildDocument($small);
    $product->addChildDocument($medium);
    $product->addChildDocument($large);
    // add product document block to the index
    $updateResponse = $client->addDocument(
            $product,
            true, // overwrite if the document exists
            10000 // commit within 10 seconds
    );
    print_r($updateResponse->getResponse());

    以上例程的输出类似于:

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

    参见

    • SolrInputDocument::addChildDocuments() Adds an array of child documents
    • SolrInputDocument::hasChildDocuments() Returns true if the document has any child documents
    • SolrInputDocument::getChildDocuments() Returns an array of child documents(SolrInputDocument)
    • SolrInputDocument::getChildDocumentsCount() Returns the number of child documents