我有一个包含 4 个文本字段的表,我当前正在使用
进行搜索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 | |
+------------+-------------+------+-----+---------+----------------+
最佳答案
如果您在mysql中使用全文搜索,请尝试http://sphinxsearch.com/ 。这将为您的首选数据建立索引,然后您可以对该索引进行全文搜索。
或者您可以使用elasticsearch ,一个强大的搜索/索引引擎即服务。这是当今流行的搜索服务。
我不建议你在mysql上做全文。通过尝试使用上述技术,您还可以发展您的技能。
关于PHP/MySQL 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21121156/