2016-10-07 4 views
1

http://www.vision-net.ie/freeSearchまたはhttps://search.cro.ie/company/のようなアイルランドの会社名を確認する検索エンジンを作成したいのですが、この検索エンジンの仕組みはわかりません。もし誰かがここで私は会社名をチェックするための検索エンジンを作成するのに役立ちます。ここアドバンスPHPやajaxで検索エンジンを作成するには?

+0

が使用されています。データベースはレコードがいっぱいで、レコードの(Levenshteinファジー検索)または類似の検索を選択します。クライアント(ブラウザ)はサーバー側の検索ページ(PHP/ASP/JSP/etc)にajax/queryを実行し、データベース検索を行い、JSON検索結果をajaxに返したり、新しい検索結果を表示したりしますページレンダリングされたサーバー側。この質問はSOにあるほど具体的ではないので、もっと個人的な研究が必要です。 –

+0

上記のサイトは同じ検索結果を表示しているので、検索エンジンがデータベースから検索していないと思うので、別のWebサイトhttp://solocheck.ieも同じフォーマットの結果を返します3つのウェブはサムフォーマットの結果を与えますが、違いは結果だけではなくスタイルに関するものです –

答えて

0

で おかげでMySQLデータベースと一緒に働いて、検索PHPの機能とAjaxを示し紹介チュートリアルです

最初のHTMLフォームを作成..あなたは観察するlocalhostの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」 あなたはCITYフィールドに何かを入力して、ユーザーにrespondeますAjaxのファイルを作っている

// 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); 
    } 
} 

最後に、クライアントのブラウザ(ajaxを使用)がアクセスする 'searchvenue.php'ファイルがあります。それは、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クエリを実行することができます。

が、searchvenue.phpスクリプトであなたは、あなたが

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テーブルを作成して作成するためのテストコードです。現在の例では

+0

解決に感謝しますが、私が探していた答えではないかもしれません。同じデータベースを使用して会社の詳細にアクセスする –

関連する問題