0
我正在使用solr PHP客戶端的solr 6.6.0。我添加使用下面的代碼的文檔,並可以正常工作:Solr搜索引擎需要在添加文檔後重新啓動
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。
任何幫助將不勝感激提前致謝。
感謝您的回答,但正如您在我的代碼中看到的,我已經寫了提交代碼'$ solr-> commit();' –
啊,對不起。我不確定'$ solr'客戶端在發送'commit'時會做什麼 - 如果它沒有打開新的搜索器,您將看不到新的文檔。此外,通常不需要爲每次提交進行優化,除非您計劃讓生成的索引在較長時間內存活(即,如果經常提交新文檔,則在每次提交後進行優化都將毫無價值)。 – MatsLindh
所以我應該從我的代碼中刪除優化行? –