mysql - 如何进行 MySQL 查询以向前和向后搜索术语?

标签 mysql sql

我有以下用户可能输入的搜索词(来自三个示例词):

"goofy plastic toy"
"goofy toy plastic"
"plastic goofy toy"
"plastic toy goofy"
"toy goofy plastic"
"toy plastic goofy"

我如何编写一个正确的 SELECT 语句,无需硬编码 OR 即可查看所有语句?

所以只是:

SELECT a
FROM b
WHERE c = '<search statements in all possible ways separated by spaces here>';

用户输入的字数可以是无限的。可能是两个,也可能是十个,谁知道呢。

我正在尝试搜索 100,000 个产品标题及其描述,并找出哪些记录以任何顺序包含所有字词。

最佳答案

如果您只想返回以任意顺序包含这两个词的行(即使它们还包含其他词),那么您可能需要使用 FULLTEXT像这样的索引:

SELECT a
FROM b
WHERE MATCH (c) AGAINST ('+goofy +plastic' IN BOOLEAN MODE);

关于mysql - 如何进行 MySQL 查询以向前和向后搜索术语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20383470/

相关文章:

mysql - 根据 StackOverflow 等条件获取问题的最佳方式

python - 通过 psycopg2 创建具有新几何类型的 Redshift 表

php - SQL 查询 - 如果不匹配则限制结果

mysql - 合并两个查询以在 mysql 中获取结果

mysql - 查询以获取不为空且不匹配字符串的最新构建说明

php - 我如何从数据库获取数据并在页面打开时填充 &lt;input type =“text” >

python - MYSQL 语句中的动态表名 (Google Cloud SQL)

mysql - 哪种 MySQL Join 查询更适合这种情况?

python - 带有 unicode 修复的元组

mysql - 在 SQL 中存储分区集列表的有效方法