Example #1
0
 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();
     */
 }
Example #2
0
 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;
 }