2015-11-22 20 views
0

我正在使用日光浴室來實現solr搜索。我需要將我的文件編入索引。我正在使用下面的代碼來做到這一點。無法在日光浴室使用bufferedadd插件索引文檔

require('init.php'); 

use Solarium\Plugin\BufferedAdd\Event\Events; 
use Solarium\Plugin\BufferedAdd\Event\PreFlush as PreFlushEvent; 
use Solarium\Plugin\BufferedAdd\Event\PostCommit as PostCommitEvent; 

/////////////////This function adds the knowledge maps to solr////////////////////////////// 

    $results_index = query(" select indexed_id from update_solr WHERE table_name='knowledgemaps'"); 

    $results = query(" select m_id,k_id, m_title, m_des from knowledgemaps WHERE k_id>{$results_index[0]['indexed_id']}"); 

     $client = new Solarium\Client($config); 

    $buffer = $client->getPlugin('bufferedadd'); 
    $buffer->setBufferSize(10); 

    for($i=0;$i<count($results);$i++) { 

    // also register an event hook to display what is happening 
    $client->getEventDispatcher()->addListener(
     Events::PRE_FLUSH, 
     function (PreFlushEvent $event) { 
      echo 'Flushing buffer (' . count($event->getBuffer()) . 'docs)<br/>'; 
     } 
    ); 

      // Create a document 
      $doc = array(); 

       $doc["map_id"]=$results[$i]["m_id"]; 
       $doc["user_id"]=$results[$i]["k_id"]; 

       $doc["map_title"]=$results[$i]["m_title"]; 

       if(isset($results[$i]["m_des"])&&is_null($results[$i]["m_des"])){ 
       $doc["map_des"]=$results[$i]["m_des"]; 
       } 

      $buffer->createDocument($doc); 
          } 

    $buffer->flush(); 

當我執行代碼時,我沒有得到任何錯誤。它使沖洗文檔的數量正確。但沒有數據索引索引。

有可能還需要提交更改,您可以通過更換最後沖洗呼叫與承諾做到這一點需要建立索引的信息

回答

0

你需要一些額外的代碼。