mysql - 为多个单词关键字创建索引mysql

标签 mysql

我有 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

  1. 我想创建一个索引来加快关键字列的搜索速度,我看到有不同类型的索引,例如 UNIQUE、INDEX、SPATIAL、PRIMARY、FULLTEXT 等。我应该选择在哪一个上建立索引关键字栏。 MYSQL语句是做什么的?

  2. 如何制作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/

相关文章:

mysql - 如何结合2个Grails应用程序,共享同一个数据库?

mysql - 获取最后插入元素的ID

php - 洪水功能,显示可以再次发帖的时间

MySQL - 加速查询避免文件排序和临时

mysql - sql按值计数按不同值堆栈

mysql - Erlang emysql iPhone 表情符号编码问题

mysql - 根据列数据查找缺失行-MySQL

php - PHP : Gearman vs. pthreads 中的异步数据库/服务调用

c# - WPF MySQL 连接错误处理

mysql - 通过计算另一个表的结果来更新表