无法在日光浴室使用bufferedadd插件索引文档

时间:2015-11-22 23:56:22

标签: solr solarium

我正在使用日光浴来实现solr搜索。我需要将我的文件索引到solr。我使用以下代码来执行此操作。

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();

当我执行代码时,我没有收到任何错误。它将刷新文档的数量设置为正确。但是没有数据在solr中被索引。

索引信息是否需要一些额外的代码

1 个答案:

答案 0 :(得分:0)

您可能仍然需要提交更改,您可以通过使用commit替换最后一次刷新调用来完成此操作。