【发布时间】:2012-02-07 09:13:31
【问题描述】:
我目前想用 SQL 和 PHP 做一个搜索引擎。我经常使用以下查询:
SELECT * FROM info WHERE name LIKE '%$q%' LIMIT 10
但我想选择以 $q 开头的 'name' 信息,而不是包含 $q 的信息。
【问题讨论】:
-
“我想做一个搜索引擎”,这是什么意思?这是否意味着您要执行查询?
我目前想用 SQL 和 PHP 做一个搜索引擎。我经常使用以下查询:
SELECT * FROM info WHERE name LIKE '%$q%' LIMIT 10
但我想选择以 $q 开头的 'name' 信息,而不是包含 $q 的信息。
【问题讨论】:
如果您要搜索具有多个名称的字段,并且要搜索可能位于字段中间的名称,那么使用Full Text Search (FTS) 可能会更好。例如,如果 OP 中的 name 字段指的是全名并且可能包含 "John Doe",并且您想搜索 "Doe",那么 FTS 可能会比使用LIKE 运营商。使用 FTS,文本中的单个单词被索引,因此搜索速度非常快,而且它允许更复杂的搜索,例如在不相邻的字段中查找两个单词(或名称)的能力(举一个例子随机)。
OP 中没有提到特定的数据库供应商,但如果支持 FTS,那么它可能是您尝试的一个不错的选择。一些 FTS information for SQL Server 和 for MySQL 很容易通过搜索找到。
【讨论】:
只需删除第一个通配符 (%):
SELECT * FROM info WHERE name LIKE 'X%' LIMIT 10
【讨论】: