0

我正在使用 solr PHP 客户端使用 solr 6.6.0。我正在使用下面的代码添加文档并且它工作正常:

foreach ($data as $key => $value) {

                $docs['doc_no'.$i]['id'] = $value['id'];
                $docs['doc_no'.$i]['name'] = $value['name'];
                $docs['doc_no'.$i]['sub_title'] = strip_tags($value['sub_title']);
                $docs['doc_no'.$i]['small_image'] = $value['small_image'];
                $docs['doc_no'.$i]['project_type'] = $value['project_type'];
                $docs['doc_no'.$i]['project_status'] = $value['project_status'];
                $docs['doc_no'.$i]['logo'] = $value['logo'];
                $docs['doc_no'.$i]['price'] = $value['price'];
                $docs['doc_no'.$i]['url'] = $value['url'];
                $docs['doc_no'.$i]['flat_type_desc'] = $value['flat_type_desc'];
                $docs['doc_no'.$i]['project_config'] = $value['project_config'];
                $docs['doc_no'.$i]['address'] = $value['address'];
                $docs['doc_no'.$i]['location'] = $value['location'];

                $i++;
            }
            //print_r($docs);exit;

            $documents = array();
            foreach($docs as $item => $fields) {
                $part = new Apache_Solr_Document();

                foreach ( $fields as $key => $value ) {
                    if ( is_array( $value ) ) {
                        foreach ( $value as $data ) {
                            $part->setMultiValue( $key, $data );
                        }
                    }
                    else{
                        $part->$key = $value;
                    }
                }

                $documents[] = $part;
            }

            try {
                    $solr->addDocuments( $documents );
                    $solr->commit();
                    $solr->optimize();


                }
                catch ( Exception $e ) {
                    echo $e->getMessage();
                }

执行上述代码后,我必须通过 cmd 行手动重新启动 solr,然后它会得到反映,我想问一下,每次在 solr 中添加任何文档时,我都必须手动重新启动 solr 吗?一旦我在文档中有数据,有没有其他方法可以自动重启 solr。

任何帮助将不胜感激在此先感谢。

4

1 回答 1

0

为了使提交的文档在索引中可见,您必须发出提交 - 并要求打开一个新的阅读器(这通常是为您处理的,因此通常没有必要。您如何在 Drupal 框架中做到这一点我不知道,但我猜你的 Solr 客户端有一个commit方法或类似的东西。我尝试搜索 API 文档,但除了_Document类之外都是空的。

提交提交后,索引更改将在几秒钟内可见,或者在软提交的情况下(更改不会在稍后持久化到磁盘)几乎立即可见。

您也可以在提交文档时要求一个commitWithin时间间隔,但这也取决于您使用的客户端如何使用您包含该参数的方式。

于 2017-08-15T08:20:12.763 回答