Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 有没有办法根据字符串匹配的百分比来选择MySQL中的表行?_Php_Mysql - Fatal编程技术网

Php 有没有办法根据字符串匹配的百分比来选择MySQL中的表行?

Php 有没有办法根据字符串匹配的百分比来选择MySQL中的表行?,php,mysql,Php,Mysql,我正在尝试用PHP制作一个简单的部分地址搜索实用程序。该表只是有一个“地址”列。我的目标是让用户在表单中输入部分地址,并让我的脚本检索该表中25个最接近的匹配项 在我看来,最明显也是最草率的方法是选择表中的每个地址,然后让一个PHP循环遍历每个地址,计算与搜索词的相似度百分比,对它们排序,然后输出。当您认为表有数万行,而我最多寻找25个时,这似乎是一个巨大的资源浪费。 我想这样做: SELECT id, firstname, lastname, PERCENTMATCH(address, $se

我正在尝试用PHP制作一个简单的部分地址搜索实用程序。该表只是有一个“地址”列。我的目标是让用户在表单中输入部分地址,并让我的脚本检索该表中25个最接近的匹配项

在我看来,最明显也是最草率的方法是选择表中的每个地址,然后让一个PHP循环遍历每个地址,计算与搜索词的相似度百分比,对它们排序,然后输出。当您认为表有数万行,而我最多寻找25个时,这似乎是一个巨大的资源浪费。

我想这样做:

SELECT id, firstname, lastname, PERCENTMATCH(address, $searchterm) AS matchpercent
FROM accounts
WHERE matchpercent > 85
ORDER BY matchpercent
LIMIT 25

然而,我还无法从我的查询中找到任何方法来实现这一点。这是可能的还是我必须走草率的路线?

全文搜索可以对查询相关性进行评分:

请参阅我之前的建议,但我不确定这是否适用于您。因此,我将把这作为一个评论。你可以解析出地址,然后从那里开始工作。Detect的答案似乎是通常的做法。但是,为了清楚起见,“字符串匹配百分比”是什么意思?你的意思是最长公共子序列的长度占搜索字符串或每个特定记录字符串的百分比吗?@jmz-这似乎有帮助,但不幸的是,接受答案中的链接已断开。嗯,我看到的问题是,它需要修改现有表。我试图搜索的表是由我们的生产软件创建的,而不是我自己编写的软件。我对它进行任何结构上的修改都非常谨慎,即使它们看起来可能无关紧要。