function reindex() { //todo 重建索引 $this->link(); $index = new Zend_Search_Lucene($this->dir); $analyzerObj = new search_instance_analyzer_cjk(); $analyzerObj->addPreFilter(new search_instance_analyzer_filter_goods()); $analyzerObj->addPreFilter(new search_instance_analyzer_filter_cjk()); $analyzerObj->addFilter(new search_instance_token_filter_lowercase()); return true; Zend_Search_Lucene_Analysis_Analyzer::setDefault($analyzerObj); $doc = new Zend_Search_Lucene_Document(); $data = app::get('b2c')->model('goods')->getlist('*', array()); $doc->addField(Zend_Search_Lucene_Field::Text('goods_id', $val['goods_id'])); if (isset($val['product'][0]['price']['price']['price'])) { $pric = $val['product'][0]['price']['price']['price']; } else { if (is_array($val['product'])) { foreach ($val['product'] as $kp => $vp) { $pric = $vp['price']['price']['price']; } } } /* $doc->addField(Zend_Search_Lucene_Field::UnStored('cat_id', $val['category']['cat_id'])); $doc->addField(Zend_Search_Lucene_Field::UnStored('brand_id',$val['brand']['brand_id'])); $doc->addField(Zend_Search_Lucene_Field::UnStored('price',$this->priceChange($pric))); $doc->addField(Zend_Search_Lucene_Field::UnStored('marketable','true')); if(isset($val['props'])){ for($i=1;$i<=28;$i++){ $p = 'p_'.$i; $doc->addField(Zend_Search_Lucene_Field::UnStored($p,$val['props'][$p]['value'])); } } foreach($val['keywords'] as $k=>$v){ $keyword.= '#'.$v['keyword'].'@'; } foreach($val['product'] as $k=>$v){ if(is_array($v['spec_desc']['spec_value_id'])){ foreach($v['spec_desc']['spec_value_id'] as $key=>$vals){ $spec.= '#'.$key.$vals.'@'; } } $bn.= '#'.$v['bn'].'@'; } $name = '#'.$val['name'].'@'.$keyword.'#'.$val['bn'].'@'.$bn; $doc->addField(Zend_Search_Lucene_Field::UnStored('title', $name)); $doc->addField(Zend_Search_Lucene_Field::UnStored('keyword',$keyword)); $doc->addField(Zend_Search_Lucene_Field::UnStored('spec',$spec)); $doc->addField(Zend_Search_Lucene_Field::UnStored('bn','#'.$val['bn'].'@'.$bn)); $index->addDocument($doc); return $index->commit(); */ }
function reindex(&$msg) { // 重建索引 $index = $this->create(); $analyzerObj = new search_instance_analyzer_cjk(); $analyzerObj->addPreFilter(new search_instance_analyzer_filter_goods()); $analyzerObj->addPreFilter(new search_instance_analyzer_filter_cjk()); $analyzerObj->addFilter(new search_instance_token_filter_lowercase()); Zend_Search_Lucene_Analysis_Analyzer::setDefault($analyzerObj); $doc = new Zend_Search_Lucene_Document(); $data = app::get('b2c')->model('goods')->getlist('*', array()); foreach ($data as $key => $val) { $doc->addField(Zend_Search_Lucene_Field::Text('goods_id', $val['goods_id'])); $doc->addField(Zend_Search_Lucene_Field::UnStored('cat_id', $val['cat_id'])); $doc->addField(Zend_Search_Lucene_Field::UnStored('brand_id', $val['brand_id'])); $doc->addField(Zend_Search_Lucene_Field::UnStored('price', $this->priceChange($val['price']))); $doc->addField(Zend_Search_Lucene_Field::UnStored('marketable', $val['marketable'])); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('last_modify', $val['last_modify'])); for ($i = 1; $i <= 28; $i++) { $p = 'p_' . $i; $doc->addField(Zend_Search_Lucene_Field::UnStored($p, $val[$p])); } /* foreach($val['keywords'] as $k=>$v){ $keyword.= '#'.$v['keyword'].'@'; }*/ if (is_array($val['spec_desc'])) { foreach ($val['spec_desc'] as $k => $v) { foreach ($v as $key => $vals) { $spec .= '#' . $k . $vals['spec_value_id'] . '@'; } } } $name = '#' . $val['name'] . '@'; $doc->addField(Zend_Search_Lucene_Field::UnStored('title', $name)); //$doc->addField(Zend_Search_Lucene_Field::UnStored('keyword',$keyword)); $doc->addField(Zend_Search_Lucene_Field::UnStored('spec', $spec)); $doc->addField(Zend_Search_Lucene_Field::UnStored('bn', '#' . $val['bn'] . '@')); unset($p); unset($spec); $index->addDocument($doc); } $msg = '重建索引成功'; return true; }