-1

我正在做一个涉及 PHP 和 MySQL 的项目。我承认我对两者都很陌生。

我有一个有一些公司名称的表,比如说可口可乐,如果用户搜索可口可乐,我必须从表中读取一些信息。我的问题是,即使用户写的是可口可乐公司或其他任何匹配的东西,我怎样才能让它工作?

我已经实现了 SOUNDEX,它提供了基本的错误处理,但现在我想要一些可以让我检查表中的名称(可口可乐)是否与来自用户的字符串匹配的东西(“可口可乐公司”包括“可口可乐”) .

我找到了“LIKE”声明

 WHERE Name LIKE %$name%

但它似乎可以解决问题,它可以检测用户是否写了更少的东西,但是如何检测他/她是否写了更多的东西?(就像是

WHERE %Name% LIKE $name

如果它甚至存在)。

4

1 回答 1

0

如果您真的想检查用户是否写少,为什么不创建一个检查搜索字符串长度的子句,如果是 12 个或更多字符,请使用该SUBSTRING函数搜索用户输入的前 8 个字符。

WHERE NAME LIKE CONCAT('%', SUBSTRING($searchString, 8), '%')

听起来您的项目确实可以从强大的搜索库中受益。您是否尝试过查看类似于Apache Lucene的库或插件?我知道 Lucene 是用 Java 编写的,但查找它可能会帮助您找到一个用适合您项目的语言编写的强大插件。

于 2015-07-24T16:18:08.003 回答