如何创建一个MySQL查询来搜索向前和向后的术语?

时间:2013-12-04 18:51:40

标签: 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个产品标题及其描述,并在任意顺序中提取包含所有字词的记录。

2 个答案:

答案 0 :(得分:1)

如果您只想以任何顺序返回包含这两个单词的行(即使它们也包含其他单词),那么您可能希望使用FULLTEXT这样的索引:

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

答案 1 :(得分:0)

如果您不关心性能,可以使用regular expressions。如果这样做,您应该考虑重新构建数据库架构。关系数据库用于处理原子数据,而不是数据集。最简单的更新是使列ENUM或SET取决于更适合您的情况。