Tag

Artikel  FullText Search yang ditulis NugrahaPutra, mengajari saya bagaimana cara membagi hasil pencarian dalam beberapa halaman.

Dalam artikel itu, hasil dari pencarian dipindahkan kedalam array. Untuk pencarian yang dibatasi, katakalah 100 hit, memindahkan kedalam array tentu tidak memakan waktu lama. Tapi jika dilakukan terhadap hit yang tidak terbatas, katakanlah 10.000 hit lebih, maka seketika performance akan terasa drop.

Karena itu saya ubah sedikit, saya tidak menyimpan kedalam hit, tetapi ketika method get_result() dipanggil baru sy masukkan data-data itu kedalam array. Tentu saja sebanyak offset (jumlah item yang dikehendaki dalam halaman). Berikut selengkapnya.

function get_result ($offset, $page){
        $hits = array();
	$startpos = ($page-1) * $offset;
	$endpos = $startpos+$offset;
	if($this->get_num_result()<$endpos)
	     $endpos=$this->get_num_result();
	$j=0;
	for ($i=$startpos;$i<$endpos;$i++){
		$item=$this->result[$i];
		$this->hits[$j]["id"] = $item->id;
            	$this->hits[$j]["score"] = $item->score;
            	$this->hits[$j]["productid"] = $item->productid;
		$this->hits[$j]["productcode"] =$item->productcode;
		$this->hits[$j]["nama"] = $this->query->highlightMatches($item->nama);
		$this->hits[$j]["keterangan"] =$this->query->highlightMatches($item->keterangan);
            	$this->hits[$j]["harga"] = $item->harga;
            	$this->hits[$j]["hargaNormal"] = $item->hargaNormal;
            	$this->hits[$j]["namasupplier"] = $this->query->highlightMatches($item->namasupplier);
            	$this->hits[$j]["alamat"] = $this->query->highlightMatches($item->alamat);
            	$this->hits[$j]["profileUrl"] = $item->profileUrl;
            	$this->hits[$j]["productUrl"] = $item->productUrl;
            	$this->hits[$j]["img1Url"] = $item->img1Url;
            	$this->hits[$j]["img2Url"] = $item->img2Url;
            	$this->hits[$j]["img3Url"] = $item->img3Url;
		$j++;
}
Iklan