我已经在 mySQL 中连接以生成一个可以搜索的字段。这包含客户数据库的动物以及所有者名称和地址。我需要能够按任何顺序按动物名称、所有者姓名和邮政编码进行搜索。因此,如果我的名字是 john smith,并且我拥有一只名叫 Fido 的狗并且住在邮政编码 AB1 2CD 中,那么如果输入以下任何一项,我希望搜索能够产生结果:
“john fido AB1” “john AB1” “AB1 john” “AB1 fido” “fido 2CD” “2CD” “fido” 等...即任何顺序的任何字段,也不完整的单词,所以“john fido AB1" 应该产生与 "jo fi AB1" 相同的结果
我目前有这个 PHP 代码,在我的搜索页面上获取一个文本字段,爆炸然后将其内爆以在搜索词之间添加 %:
$list = explode(' ',$_GET["q"]);
$q = implode('%%', $list);
if (!$q) return;
$sql = "SELECT DISTINCT owner.AddressPrim, owner.PostcodePrim,
owner.OwnerSurnamePrim,owner.OwnerForenamesPrim,owner.OwnerID
FROM owner
Inner Join patient ON owner.OwnerID = patient.OwnerID
WHERE CONCAT_WS(' ',owner.AddressPrim, owner.PostcodePrim,
owner.OwnerForenamesPrim,owner.OwnerSurnamePrim,patient.AnimalName) LIKE '%$q%'";
这适用于“AB1 john”和“john fido”,但不适用于“fido john”,因为它在连接字段中出现故障。
非常感谢任何帮助