gpt4 book ai didi

php - MySQL:查询以搜索所有可能的单词

转载 作者:行者123 更新时间:2023-11-29 01:24:01 24 4
gpt4 key购买 nike

我有一个带有输入框的表单,用户可以在其中指定他们的姓名,姓名可以是两个或多个单词,例如 John SmithJohn Michael Smith

我需要编写一个查询,返回包含提交名称中所有单词的记录。所以查询将返回包含所有这些名称词但可以有不同顺序的记录。

例如,如果搜索字符串是 John Michael Smith,查询应该能够返回名称为 John Smith MichaelMichael Smith John< 的记录Smith John Michael 或其他所有这些词的组合。可以看出,仅返回名称字段中仍然包含所有单词但可以具有不同顺序的记录。但是,它不应返回不包含名称部分的结果,例如 John Michael 不应返回,因为它缺少 Smith

我不知道如何为我的这种要求编写查询。请帮忙。


更新

到目前为止提供的答案甚至还返回匹配 John Michael 的记录。我尝试了 @Marco 的答案, @abesto@Eddie .

问题依然存在:(

最佳答案

您可以尝试全文搜索:

SELECT * FROM table WHERE MATCH (name)
AGAINST ('+part1 +part2 +part3' IN BOOLEAN MODE);

在此解决方案中,'+part1 +part2 +part3' 将在 PHP 中生成。

参见 the MySQL docs

mysql> select * from sof;
+--------------------+
| n |
+--------------------+
| John |
| Smith |
| Smith John |
| Smith John Michael |
| John |
+--------------------+
5 rows in set (0.00 sec)

mysql> SELECT * FROM sof WHERE MATCH(n) AGAINST('+John +Smith +Michael' IN BOOLEAN MODE);
+--------------------+
| n |
+--------------------+
| Smith John Michael |
+--------------------+
1 row in set (0.00 sec)

关于php - MySQL:查询以搜索所有可能的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7752400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com