首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在solarium中使用bufferedadd插件对文档进行索引

无法在solarium中使用bufferedadd插件对文档进行索引
EN

Stack Overflow用户
提问于 2015-11-23 07:56:22
回答 1查看 252关注 0票数 0

我正在使用solarium来实现solr搜索。我需要将我的文件索引到solr中。我使用下面的代码来实现这一点。

代码语言:javascript
复制
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中没有数据被索引。

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

EN

回答 1

Stack Overflow用户

发布于 2015-12-01 05:05:54

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33861773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档