2014-01-14 152 views
0

我有4個文本字段一個表,我目前使用PHP/MySQL的搜索

WHERE `$field` LIKE '%$value%' 

通過場比賽的號碼直接每個字段和排序的結果與搜索。這是我編寫代碼的最有效的方法(因爲我的經驗非常有限,但是我意識到這不是用於用戶界面的最有效的方法)

我只是想知道如何創建更多用戶我一直在閱讀關於不同類型的表格搜索,但我很困惑哪些是我的表格最好的方法

搜索表單使用所有4個字段,只有一個需要填寫,我希望按相關性排序,但是這樣做是可以實現的。我不想因爲拼寫錯誤和其他原因而得到完全匹配的結果。

下面是我正在使用的表格:

MySQL>EXPLAIN `so_customer_isam`; 

-

Type: MyISAM 
Collation: UTF8_bin 
Primary Key: `id` 

-

+------------+-------------+------+-----+---------+----------------+ 
| Field  | Type  | Null | Key | Default | Extra   | 
+------------+-------------+------+-----+---------+----------------+ 
| id   | int(11)  | NO | PRI | NULL | auto_increment | 
| last_name | varchar(35) | NO |  | NULL |    | 
| first_name | varchar(35) | NO |  | NULL |    | 
| company | varchar(35) | YES |  | NULL |    | 
| phone  | varchar(35) | NO |  | NULL |    | 
+------------+-------------+------+-----+---------+----------------+ 
+0

那麼你的關於按相關性排序的問題? –

+0

它會在給定時間在多個字段上搜索,我想是的。正如Fabien指出的那樣,如果你能詳細說明相關性。開始我會說幫助搜索實現索引的方式。可能會去搜索名稱爲mysql的soundex搜索。但這將取決於您所指的用例以及您的應用將處理的數據量。 – jaipster

+0

我想我問的是「我是否應該嘗試使用全文搜索,因爲我一次只搜索單個詞條?」我試圖確定搜索單字字段格式的最佳方法。通過「相關性」我的意思是[搜索:「克里斯布朗」] =克里斯布朗>克里斯托弗布朗>克里斯布朗>克里斯布朗>布朗>克里斯。我目前在這個表中有400個客戶,並且會增加大約平均值。每天1次左右。所以它不是一個大型的數據庫,所有的搜索都是在本地網絡上完成的。 – Dexter

回答

1

如果你正在使用MySQL的全文搜索,嘗試http://sphinxsearch.com/。這將索引您的首選數據,然後您可以在該索引上進行全文搜索。

或者您可以使用elasticsearch作爲服務的一個強大的搜索/索引引擎。這是當今流行的搜索服務。

我不建議你在mysql上創建全文。通過嘗試使用上述技術,您還可以發展自己的技能。

+0

我結束了與獅身人面像。沒有真正簡單的方法來搜索全文搜索中的名稱拼寫錯誤,所以如您所述,我最終下載並安裝了Sphinx。它工作真棒。非常感謝! – Dexter