我對Solr非常陌生,但我可能錯過了一些簡單的事情,但是,已遵循Xavier Briand's演示文稿我設置了Symfony2,Solarium和Nelmio \ SolariumBundle。嘗試使用Solr與Symfony2索引文檔時未找到該類
"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;
}
我遇到了以下錯誤。
Catchable Fatal Error: Argument 1 passed to ::toSolrDocument() must be an instance of Solarium_Document_ReadWrite, instance of Solarium\QueryType\Update\Query\Document given, called in 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);
}
大多數這種方法的再次直接從澤維爾的介紹來了,可以清楚地看到,該方法$最新情況:> createDocument()不會返回正確的類型。實際上它返回了我的php對象的一個實例。有人知道我在哪裏錯了嗎?另一件可能有幫助的事情是,即使當我嘗試直接傳遞日光浴文檔時,我也會遇到異常。
foreach ($items as $item) {
$rw_item = new \Solarium_Document_ReadWrite();
$documents[] = $item->toSolrDocument($rw_item);
}
唯一的例外是
FatalErrorException: Error: Class 'Solarium_Document_ReadWrite' not found in
我似乎無法找到這個類中的任何捆綁的,我想知道如果我的設置可能會導致問題。任何幫助將非常感激。
另外需要注意的一點是,當我運行solr jar時,我看到查詢請求從我的symfony2頁面進入,它只是這個索引操作,我不能解決這個問題,所以配置可能沒問題,我是錯過理解捆綁的使用。
感謝。我將Solarium_Document_ReadWrite更改爲\ Solarium \ QueryType \ Update \ Query \ Document。 – 2013-03-17 18:11:51
我遇到了另一個可能可以幫助您解決的問題。我想從同一個solr安裝中運行多個站點。我已經在solr.xml中設置了多個核心,並可以在solr admin中看到它們。但是,在我的symfony2項目中,我的配置沒有加載設置的核心。相反,我只是在defaultCoreName屬性中的solr.xml文件中獲取默認核心集。我在這裏錯過了另一個明顯的嗎? – 2013-03-17 23:19:37