Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel für eine in PHP gekapselte Suchklasse

Beispiel für eine in PHP gekapselte Suchklasse

*文
*文Original
2017-12-29 19:02:441905Durchsuche

In diesem Artikel wird hauptsächlich das Beispiel der PHP-Suchklassenkapselung im Detail vorgestellt. Ich hoffe, es hilft allen.

Der spezifische Inhalt ist wie folgt

<?php
/**
 * SoClass.php
 * 索引与搜索类 
*/
class SoClass {
  private $_xindex;
  private $_xsearch;
 
  private $_project;
 
  public function __construct($project){
 
    //载入引导文件
    require_once &#39;lib/XS.php&#39;;
    //初始化
    $xs = new XS($project); 
    $this->_project = $project;
    $this->_xindex = $xs->index; 
    $this->_xsearch = $xs->search;
    $this->_xsearch->setCharset(&#39;UTF-8&#39;);
  }
 
  public function query($keyWord,$row=20,$jnum=0){
 
    $xs = new XS($this->_project);
    $xs->search->setFuzzy();
    $xs->search->setAutoSynonyms();
    $xs->search->setQuery($keyWord); //支持同义词搜索,默认打开
    $xs->search->setLimit($row, $jnum); //设置返回结果最多为 5 条,并跳过前 10 条
    $docs = $xs->search->search(); //执行搜索,将搜索结果文档保存在 $docs 数组中    
    $count = $xs->search->count(); //获取搜索结果的匹配总数估算值
    if($count){
      $data = array();
      foreach ($docs as $key=>$doc){
        $data[$key][&#39;pid&#39;] = $doc->pid;
        $data[$key][&#39;nid&#39;] = $doc->nid;
        $data[$key][&#39;category&#39;] = $doc->category;
        $data[$key][&#39;url&#39;] = $doc->url;
        $data[$key][&#39;name&#39;] = $xs->search->highlight(htmlspecialchars($doc->name));
        $data[$key][&#39;message&#39;] = $xs->search->highlight(htmlspecialchars($doc->message));
      }
      return array(&#39;data&#39;=>$data,&#39;count&#39;=>$count);
    }
    return array();
  }
 
  public function hotWord($num,$type=&#39;lastnum&#39;){
 
    return $this->_xsearch->getHotQuery($num,$type);
  }
 
  public function expanded($keyWord){
 
    return $this->_xsearch->getExpandedQuery($keyWord);
  }
 
  public function lastCount(){
 
    return $this->_xsearch->getLastCount();
  }
 
  public function index($data,$update=0){
 
    // 创建文档对象
    $doc = new XSDocument;
    $doc->setFields($data);
 
    // 添加或更新到索引数据库中
    if(!$update){
      $this->_xindex->add($doc);
    }else{
      $this->_xindex->update($doc);
    }
  }
 
  public function delete($idArray){
    //删除索引(主键删除array(&#39;1&#39;,&#39;2&#39;,&#39;3&#39;))
    $this->_xindex->del($idArray); 
  }
 
  public function addSynonym($word1,$word2){
    $this->_xindex->addSynonym($word1,$word2);
  }
 
  public function clearIndex(){
    $this->_xindex->clean();
  } 
} 
?>

Verwandte Empfehlungen:

PHP-gepackte GD-Bibliothek

Detaillierte Erklärung von PHP-Klassen und -Konstruktoren

Umfassendes Verständnis von PHP-Klassen und -Objekten

Das obige ist der detaillierte Inhalt vonBeispiel für eine in PHP gekapselte Suchklasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn