【问题标题】:MySQL: Fetching all rows for searching?MySQL:获取所有行进行搜索?
【发布时间】:2012-04-01 12:48:36
【问题描述】:

我有一个 MySQL 数据库表,其中包含数千行的人名。

我正在为此表编写一个搜索脚本,以显示存储在表中的最相似的名称。

所以我想获取表的所有行,然后使用 FOREACH 循环调用similar_text()(一个返回百分比数字的函数),然后只在表上显示匹配 60% 相似度的名称.

如果这样做(获取所有行),我的网站性能会不会太慢? 我的服务器带宽会因此受到影响吗?

ps:'SOUNDS LIKE' MySQL 命令在这种情况下没有多大帮助

【问题讨论】:

  • similar_text 有什么作用?你能把代码贴出来让我们看看是否可以转移到数据库中进行处理?

标签: php mysql


【解决方案1】:

让数据库进行搜索。

看到这个问题,看起来像你需要的:How to find similar results and sort by similarity?

【讨论】:

    【解决方案2】:

    是的,这很可能会减慢您的网站速度,尤其是随着您的网站不断增长并且您有许多用户同时进行搜索。

    如果可能,请使用数据库中的存储过程或用户定义的函数进行搜索。此外,即使您不知道要查找的条目的确切拼写,如果您知道第一个字母,您也可以加快搜索速度。您可以使用 WHERE name LIKE 'F%' AND similar_text(name, 'FOOBAR') > 0.6 之类的内容,因为这样可以使用索引来仅查找以 F 开头的那些行。

    【讨论】:

    • 你在 MySQL 语句中使用了similar_text() 吗?
    猜你喜欢
    • 2011-08-20
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 2013-11-04
    • 1970-01-01
    • 2018-12-08
    相关资源
    最近更新 更多