我有 mysql 数据库,我有一个包含几列的表,其中一列包含我需要搜索的关键字。
关键字位于用引号分组的列中,如下所示
ID keywords
------------------------------------------------------------
row 1: "one" "one two" "one two three" "three four five" "two three one"
row 2: "four" "forty four" "fifty four" "thirty four two" "three four five"
正如您所看到的,每个“关键字”可以是引用中的单个单词或一组单词,其中引用中的单词充当一个关键字。
我想找出哪些行包含所需的关键字组。
要匹配关键字,整个引用必须完全匹配。
例如,如果我想查找哪些行包含“two”,它应该返回零匹配。如果我搜索“三四五”,它应该返回第 1 行和第 2 行。
可能有数千行这样的。
关键字列的类型为 TEXT
我想创建一个索引来加快关键字列的搜索速度,我看到有不同类型的索引,例如 UNIQUE、INDEX、SPATIAL、PRIMARY、FULLTEXT 等。我应该选择在哪一个上建立索引关键字栏。 MYSQL语句是做什么的?
如何制作MYSQL语句使用索引来搜索关键字组
现在我有这个语句来进行搜索,我不确定这是否是最好的方法。
SET @find='three four five';
SELECT * from table WHERE MATCH (keywords) AGAINST(find IN NATURAL LANGUAGE MODE);
最佳答案
这是错误的数据库结构。 但如果您现在无法更改数据库,并且需要获取结果:
SELECT * from table WHERE `keywords` LIKE '%"three four five"%'
如果该变量来自用户,请使用prepared statement 。然后查询将如下所示:
SELECT * from table WHERE `keywords` LIKE '%"?"%'
关于mysql - 为多个单词关键字创建索引mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50667037/