【问题标题】:unable to use full text search with mysql query using MATCH and AGAINST无法使用 MATCH 和 AGAINST 对 mysql 查询进行全文搜索
【发布时间】:2016-02-16 11:12:32
【问题描述】:

希望有人可以帮助我。我正在尝试使用完整的搜索文本 MATCH 和 AGAINST。

我收到这个错误

1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的 ''mytable' WHERE MATCH(user) AGAINST('alex') LIMIT 0, 25' 附近使用正确的语法

我的示例查询是:

SELECT id, user FROM 'mytable' WHERE MATCH(user) AGAINST('alex') LIMIT 0, 25

【问题讨论】:

  • 我的数据库现在是 MyISAM 类型但错误仍然存​​在
  • 您不需要在 'mytable' 表名周围加上引号,而是可以使用 backticks `mytable` 或简单地不使用任何 backticks,例如 asmytable 如果表名不是特殊关键字
  • 这个错误是什么意思? #1191 - 找不到与列列表匹配的 FULLTEXT 索引

标签: php mysql


【解决方案1】:

你只能在表名或列名周围使用反引号,除了反引号,你不能使用任何东西。

SELECT id, user FROM `mytable` WHERE MATCH(user) AGAINST('alex') LIMIT 0, 25

哪里需要反引号?

如果您的表或列名包含任何 MYSQL 保留字,则您必须在名称周围使用反引号。

MYSQL Reserve Keywords and Words

【讨论】:

  • 这个错误是什么意思? #1191 - 找不到与列列表匹配的 FULLTEXT 索引
  • @alex: 你不使用全文索引???您需要为全文搜索添加索引。 ALTER TABLE table ADD FULLTEXT index_name(column1);
  • @alex: 或者你也可以关注这个问题:stackoverflow.com/questions/21693475/…
【解决方案2】:

你不需要引用 mytable。 DOCS

SELECT id, user FROM mytable WHERE MATCH(user) AGAINST('alex') LIMIT 0, 25

对于提到的错误。

ALTER TABLE mytable ADD FULLTEXT index_name(user);

全文索引应包含与 MATCH 子句中提到的顺序完全相同的列数。

Here 了解更多。

【讨论】:

  • 这个错误是什么意思? #1191 - 找不到与列列表匹配的 FULLTEXT 索引
  • ALTER TABLE mytable ADD FULLTEXT index_name(user);
  • 表示你没有使用全文索引
  • @alex 使用此获取更多信息stackoverflow.com/questions/9680472/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 1970-01-01
  • 1970-01-01
  • 2013-01-12
  • 2011-09-23
  • 1970-01-01
  • 2011-07-03
相关资源
最近更新 更多