2010-12-14 85 views
1

我是新創建網站的。我創建了電話簿搜索引擎(使用PostgreSQL,CGI腳本)。我的數據庫有姓名,電話號碼,城市,州,地址。製作一個像Google的數據庫搜索引擎

高達現在我已經創建了像「谷歌」在這裏我可以給任何上述數據庫條目和search.But現在我想給喜歡「名稱+城市+ ......」所以,我可以最小化搜索字段輸出條目。

+0

您如何知道搜索字符串是名稱+城市還是城市+名稱?好像你將不得不有一種方法讓用戶識別她正在輸入的字符串的類型。 – 2010-12-14 15:04:51

回答

1

你的意思是你想要搜索所有字段嗎?然後:

SELECT * 
FROM table_name 
WHERE 
Name LIKE '%query%' 
OR Tel.No LIKE '%query%' 
OR City LIKE '%query%' 
OR State LIKE '%query%' 
OR Address LIKE '%query%' 
+0

是的,其實我用它,但在搜索如果我給「名稱+城市」。如何分開名稱和城市,並搜索它們 – Naresh 2010-12-14 11:13:09

+0

我的$查詢=「選擇名稱,telno從tel_dir名稱像\'\%$ FORM {'name'} \%\'或城市如\'\%$ FORM {'name'} \%\'或狀態如\'\%$ FORM {'name'} \%\'或telno like \ '\%$ FORM {' 名 '} \%\';「; – Naresh 2010-12-14 11:14:42

+0

my $ Query =「select name,telno from tel_dir where name like \'\%$ FORM {'name'} \%\'或city like \'\%$ FORM {'name'} \%\'or state例如\'\%$ FORM {'name'} \%\'或telno like \'\%$ FORM {'name'} \%\';「; – Naresh 2010-12-14 11:15:48

1

我不知道你正在使用的編程語言,但我可以給你一個關於你可能使用的算法的想法。 它是一個簡單卻又包含許多(如果條件)

像follwoing:

如果(提供姓名)=>帶來的匹配結果,並將它們存儲在SET1 如果(提供城市) =>在Set1中過濾結果,只獲取匹配的結果並將它們存儲在S2 中(如果提供了地址)=>在S2中過濾結果並獲得匹配的結果並將它們存儲在S3 ...等中。

這樣,你把一整套的電話記錄和過濾它一次接連不斷,直到你擁有它完全過濾,不管用戶輸入將他帶來一些結果

我的意思是,如果你進入一個領域,你將得到大量的結果,如果你輸入兩個字段,你將有較少的結果,因爲結果將被過濾兩次,如果他進入三個字段,結果將被過濾三次,依此類推。 ..只需使用篩選 對不起,長答案

+0

但他可以給出任何命令,如「名稱+州+城市」或「城市+州」或「電話號碼+城市」...... – Naresh 2010-12-14 11:05:19

0

您可以在檢查用戶傳遞了哪些字段以執行搜索查詢後,創建可以動態創建WHERE子句的函數。