انجمن عمومی گسترش فناوری آگو
ساخت یک موتور جستجو - نسخه‌ی قابل چاپ

+- انجمن عمومی گسترش فناوری آگو (http://forums.ago.ir)
+-- انجمن: انجمن های عمومی گسترش فناوری آگو (/forumdisplay.php?fid=1)
+--- انجمن: برنامه نویسی (/forumdisplay.php?fid=13)
+--- موضوع: ساخت یک موتور جستجو (/showthread.php?tid=2085)



ساخت یک موتور جستجو - agotd - 02-03-2013 03:40 PM

ساخت یک موتور جستو جو گر سریع و کارآمد یکی از دق دقه های یک برنامه نویسه ، من حتی قبل از اینکه یک پروژه رو شروع کنم روس سرچ فکر می کنم . .. امروز یک کلاس بسازیم که به سریع ترین وجه ممکن و به بهترین نحوه به ما جواب مورد نظرمون رو بده ، از همه مهم تر اصولی باشه و قابل ارتقاع و سفارشی باشه ..

class.search.php

کد php:
<?php
 
class search_engine
{
    function 
search_engine($mysql)
    {
        
# set database connection
        
$this->host $mysql[0];
        
$this->username $mysql[1];
        
$this->password $mysql[2];
        
$this->database $mysql[3];
        
$this->link mysql_connect($this->host,$this->username,$this->password) or die(mysql_error());
        
$this->db_selected mysql_select_db($this->database,$this->link) or die(mysql_error());
        
$this->found = array();
    }
    function 
set_table($table)
    {
        
# set table
        
$this->table $table;
    }
    function 
set_keyword($keyword)
    {
        
# set keywords
        
$this->keyword explode(" "$keyword);
    }
    function 
set_primarykey($key)
    {
        
# set primary key
        
$this->key $key;
    }
    function 
set_fields($field)
    {
        
# set fieldnames to search
        
$this->field =$field;
    }
    function 
set_dump()
    {
        
# var dump objects
        
echo '<pre>';
        
var_dump($this->found);
        echo 
'</pre>';
    }
    function 
set_total()
    {
        
# total results found
        
return sizeof($this->found);
    }
    function 
set_result()
    {
        
# find occurence of inputted keywords
        
$key =  $this->key;
        for (
$n=0$n<sizeof($this->field); $n++)
        {
            for(
$i =0$i<sizeof($this->keyword); $i++)
            {
                
$pattern trim($this->keyword[$i]);
                
$sql "SELECT * FROM ".$this->table." WHERE `".$this->field[$n]."` LIKE '%".$pattern."%'";
                
$result mysql_query($sql);
                while (
$row mysql_fetch_object($result) AND !empty($pattern))
                {
                    
$this->found[] = $row->$key;
                }
            }
        }
        
$this->found array_unique($this->found);
        return 
$this->found;
    }
}
?>

process.php

کد php:
<?php
 
require_once 'class.search.php';
 
$config = array('localhost','root','','database');
$table 'bizmain';
$key 'biz_id';
$fields = array('biz_name','biz_address','biz_cat');
 
$keyword $_POST['keyword'].' '.$_POST['location'];
 
$found = new search_engine($config);
$found->set_table($table);
$found->set_primarykey($key);
$found->set_keyword($keyword);
$found->set_fields($fields);
 
$result $found->set_result();
print_r($result);
 
?>

form.php

کد php:
<form method=post action=process.php>
<
table border=1>
<
tr>
    <
td>Search by namecategory or keywords</td>
    <
td><input  name=keyword></td>
</
tr>
    <
td>&nbsp;</td>
    <
td><input type=submit value=Submit></td>
</
table>
</
form

sql

کد php:
CREATE TABLE `bizmain` (
  `
biz_idmediumint(8unsigned NOT NULL auto_increment,
  `
biz_namevarchar(100) default NULL,
  `
biz_addressvarchar(255) default NULL,
  `
biz_phonevarchar(100) default NULL,
  `
biz_emailvarchar(100) default NULL,
  `
biz_urlvarchar(100) default NULL,
  `
biz_catvarchar(100) default NULL,
  
PRIMARY KEY  (`biz_id`)
) ;
 
INSERT INTO `bizmain` (`biz_id`, `biz_name`, `biz_address`, `biz_phone`, `biz_email`, `biz_url`, `biz_cat`) VALUES (1'LocalFilipino.com''Makati, Philippines''(632) 848-0886''info@localfilipino.com''http://www.localfilipino.com''Advertising'),
(
2'Liberty Realty''2451 S. Buffalo Drive, Suite 145, Las Vegas, NV 89117''(702) 248-8899''info@libertyrealty.com''http://www.libertyrealty.com''Real Estate, Realty'),
(
3'FRS Philippine Freight''5960 Spring Mtn Rd, 3-D Las Vegas, NV 89146''(702) 253-7555''info@frsphilippines.com''http://www.frsphilippines