我只是按照示例on this page进行操作,关于如何使用Perl Solr扩展从数据库添加多个文档。

示例代码:

$users = $dbh->prepare($sql);

$users->execute();

$result = $users->fetchAll(PDO::FETCH_ASSOC);

foreach($result as $k=>$r){
  $docs_array[$k] = new SolrInputDocument();

  $docs_array[$k]->addField('model_id', $r['model_id']);

  $docs_array[$k]->addField('name', $r['name']);
}

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


它不起作用并给出以下错误:

Argument 1 passed to SolrClient::addDocument() must be an instance of SolrInputDocument, array given


因此,我想使这项工作唯一的方法是在每个循环中一个接一个地添加文档,如下所示:

foreach($result as $k=>$r){

  $doc = new SolrInputDocument();

  $doc->addField('model_id', $r['model_id']);

  $doc->addField('name', $r['name']);

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

}


由于此扩展程序上没有足够的文档,因此我想确定这是否是适当的方法。谢谢。

最佳答案

您在调用addDocument->s<-时链接到addDocument的文档(末尾没有复数s)。

使用正确的方法(addDocuments),文档将是正确的。

10-05 22:01