我需要根据数据库中的一个词获取几乎相同的词。
例如,我的数据库中有词 Online Shopping。
如果我给出任何像online shops、Online shop、online这样的词意味着必须得到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/