2014-01-14 112 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