我对 Solr 很陌生,但我可能缺少一些简单的东西,但是在遵循Xavier Briand 的演示文稿后,我设置了 Symfony2、Solarium 和 Nelmio\SolariumBundle。
"nelmio/solarium-bundle": "2.0.*@dev",
"solarium/solarium": "3.0.*"
为我的学说 php 对象实现了 toSolrDocument 方法。
public function toSolrDocument(\Solarium_Document_ReadWrite $doc)
{
$doc->id = $this->getId();
$doc->description = $this->getTitle();
$doc->path = "path";
return $doc;
}
我面临以下错误。
可捕获的致命错误:传递给 ::toSolrDocument() 的参数 1 必须是 Solarium_Document_ReadWrite 的实例,给定的 Solarium\QueryType\Update\Query\Document 的实例,在 Controller.php 中调用
调用此 toSolrDocument 方法的控制器具有以下功能
public function indexItems(){
$client = $this->get('solarium.client');
// get an update query instance
$update = $client->createUpdate();
// create documents
$documents = array();
$em = $this->getDoctrine()->getManager();
$repo = $em->getRepository('<Bundle>:<Object>');
$items = $repo->findAll();
foreach ($items as $item) {
$documents[] = $item->toSolrDocument($update->createDocument());
}
// add the documents and a commit command to the update query
$update->addDocuments($documents);
$update->addCommit();
// this executes the query and returns the result
$result = $client->update($update);
}
该方法的大部分内容再次直接来自 Xavier 的演示文稿,并且可以清楚地看到 $update->createDocument() 方法没有返回正确的类型。事实上,它返回 my php 对象的一个实例。有谁知道我在这里哪里出错了?可能有帮助的另一件事是,即使我尝试直接传递日光浴室文档,我也会遇到异常。
foreach ($items as $item) {
$rw_item = new \Solarium_Document_ReadWrite();
$documents[] = $item->toSolrDocument($rw_item);
}
例外是
FatalErrorException:错误:在中找不到类“Solarium_Document_ReadWrite”
我似乎在任何捆绑包中都找不到这个类,我想知道我的设置是否会导致问题。任何帮助将不胜感激。
还有一点需要注意的是,当我运行 solr jar 时,我看到查询请求来自我的 symfony2 页面,这只是我无法完成的索引操作,所以配置可能没问题,我想念理解使用的捆绑。