php - 如何使用php和mysql基于一个词从数据库中获取几乎相同的词

标签 php mysql

我需要根据数据库中的一个词获取几乎相同的词。

例如,我的数据库中有词 Online Shopping

如果我给出任何像online shopsOnline shoponline这样的词意味着必须得到Online Shopping仅有的。

现在我在下面使用选择代码。但它不能正常工作。

**SELECT words FROM atab WHERE words LIKE '%".$words."%'**

注意 : words - 列名,atab - 表名,

最佳答案

我发现执行此操作的最佳方法是返回与用户输入的任何单词的部分匹配。根据相关性对它们进行排序是完全不同的事情,但至少让您的搜索有效开始:

对于以下内容,我假设您可以像这样让用户搜索到名为 $search 的变量中:

$search='Online Shopping';

现在,将用户输入拆分为单个单词:

$mSearch=explode(" ", $search);

现在我们有一组搜索项。

有了它,我们就可以进行合理的搜索查询:

$sql="SELECT words FROM atab WHERE ";
$or="";
foreach($mSearch as $val)
{
    $sql.=$or." words like '%".$val."%'";
    if(!$or)
    {
        $or=" or ";
    }
}

这将输出如下 SQL:

SELECT words FROM atab WHERE words like '%Online%' or words like '%Shopping%'

您可以针对您的数据库很好地运行它。

完整代码:

<?php

    $search='Online Shopping';
    $mSearch=explode(" ", $search);
    $sql="SELECT words FROM atab WHERE ";
    $or="";
    foreach($mSearch as $val)
    {
        $sql.=$or." words like '%".$val."%'";
        if(!$or)
        {
            $or=" or ";
        }
    }
    echo $sql;
?>

如果您开始比较不同但含义相同的单词,事情会立即变得复杂几个数量级。

关于php - 如何使用php和mysql基于一个词从数据库中获取几乎相同的词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24096508/

相关文章:

php - MySQL:设计具有主数据库和辅助数据库的应用程序

PHPStorm - 在主题类中找不到方法

php - 使用 php 脚本将事件添加到 outlook 日历

php - 重定向标题功能不起作用

Java If-else 函数无法正常工作

php数据库连接安全检查

php - 在 php mysql 中选择选项时用值填充输入字段

mysql - 如果我更改 MySQL 中列的排序规则,现有数据会发生什么变化?

MySQL 查询查找并替换字段名称中的字符串

php - 关于创建 PHP-MySQL 后台任务的建议