如何在PHP或ajax中创建搜索引擎



我想创建一个搜索引擎来检查爱尔兰的公司名称,如http://www.vision-net.ie/freeSearch或https://search.cro.ie/company/,但不知道这个搜索引擎是如何工作的?如果有人专家在这里,然后帮助我创建搜索引擎检查公司名称。

这是一个介绍教程,展示了PHP和ajax的搜索功能,与MySQL数据库一起工作

首先创建html表单..您应该在本地主机WAMP环境中执行此操作以观察效果。

<!DOCTYPE html>
<html>
<head>
<style>
table
{
border:0;
padding:0;
margin:0 auto 0 auto;
background:#000;
color:#fff;
font-size:10px;
font-family:Verdana;
}
#resultsCity
{
position:absolute;
top:0;
right:0;
width:96px;
height:auto;
overflow:visible;
z-index:12;
text-align:center;
background:#111;
display:none;
}
#resultVenue0
{
position:relative;
top:0;
right:0;
width:96px;
min-height:60px;
height:auto;
overflow:visible;
z-index:12;
text-align:center;
background:#222;
display:block;
} 
</style>
</head>
<body>
<h1>Form demonstration</h1>
<form action="./adduser.php" method="post" >
<table>
<tr>
    <td>User name</td>
    <td><textarea name="content" ></textarea></td>
</tr>
<tr>
    <td>Enter city or town</td>
    <td><input type="text" name="work" id='searchVenue0' /></td>
</tr>
<tr>
<td>Click city</td>
<td>
<div id='resultVenue0'>
<ul id='list'></ul>
</div>
</td>
</tr>
    <td>*</td>
    <td><input type="submit" value="submit" name="submit" /></td>
</table>

<script type='text/javascript' src='searchvenue.js'>
</script>
</body>
</html>

然后在同一目录下创建一个文件,命名为'searchvenue.js'您正在制作ajax文件,该文件将响应用户在CITY字段

中输入的内容。
// file : searchvenue.js
var timer1;
var ajaxreq2;
var msg0;
var divCity0;

var array0;
ajaxreq2 = false;
var obj;
obj=document.getElementById("searchVenue0"); // form entry INPUT element
obj.onkeydown = StartSearch; // add the event that re-acts to the keyboard pressed..
divCity0 = document.getElementById("resultVenue0");
function sendmsg0(target)
{
   try 
   {
   ajaxreq2= new XMLHttpRequest();
   }
   catch (error)
    {
    try {
      ajaxreq2 = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (error)
    {
      return false;
    }
   }
  msg0 = document.getElementById("searchVenue0").value;
  // CAPTURE the value of the TEXT in the input field
  ajaxreq2.open("POST","./searchvenue.php",true);
  ajaxreq2.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  ajaxreq2.onreadystatechange = DisplayResults;
  ajaxreq2.send("msg="+msg0);
}


function StartSearch()
{
   if (timer1)
   {
    window.clearTimeout(timer1);
   }
   timer1 = window.setTimeout("sendmsg0();",200);
}

function DisplayResults() {
if (ajaxreq2.readyState !=4)
    {
        return;
    }
   if (ajaxreq2.status==200)
   {
// Create Variables
var ul,div,name,names,text,li,i,a;
   ul = document.getElementById("list");
   div = document.getElementById("resultVenue0");
   div.removeChild(ul);
   ul = document.createElement("ul");
   ul.id="list";
   names = ajaxreq2.responseXML.getElementsByTagName("name");
   for (i = 0; i < names.length; i++)
   {
        arrayCount = 0;
      li = document.createElement("li");
      name = names[i].firstChild.nodeValue;
      text = document.createTextNode(name);
      li.appendChild(text);
      a = document.createElement("a");
      a.href = "#";

      a.appendChild(li);
      ul.appendChild(a);
   }
   if (names.length==0) {
      li = document.createElement("li");
      divCity0.style.display="none";
      li.appendChild(document.createTextNode("No results"));
      ul.appendChild(li);
      array0 = new Array();
      arrayCount = 0;
   }
   divCity0.style.display="block";
   div.appendChild(ul);
   }
}

最后这里是'the searchvenue.php'文件,客户端浏览器将使用ajax访问该文件。它将执行php脚本并在数据库中执行搜索。

<?php
header("Content-type: text/xml");
$host = "localhost";
$user = "root";
$code = "";
$db = "matrix2";
$connect = mysqli_connect($host,$user,$code,$db);
$sql = "SELECT city FROM citylist;";
// searching a table called citylist and getting the Column 'city'
$result = mysqli_query($connect,$sql);
$query=$_POST['msg'];
// Argument OR paramter received from the CLIENT browser
// ( the HTML input field )
echo '<?xml version="1.0" ?>';
echo "<names>";
while ($array = mysqli_fetch_assoc($result) )
{ 
   if (stristr($array['city'],$query))
    {
      echo "<name>".$array['city']."</name>";
    }
}
echo "</names>";
?>

php脚本获取整个数据库,只有通过使用'stristr'函数才能过滤结果,然后通过XML格式返回给客户端的请求。应该有更好的SQL查询可以执行。

但是请记住,为了测试这个,在searchplace .php脚本中,你必须更改变量$host, $user, $code和$db的值,以匹配你想要参与的数据库

DROP TABLE IF EXISTS `citylist`;
CREATE TABLE IF NOT EXISTS `citylist` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `city` varchar(50) NOT NULL,
  `target_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
INSERT INTO `citylist` (`id`, `city`, `target_id`) VALUES
(1, 'cape town', 385095),
(2, 'durban', 295693),
(3, 'johannesburg', 886895);
下面是创建和填充citylist表的测试代码,在当前示例中使用

最新更新