Jua*_*ali 5 mysql sql full-text-search
我正在尝试使用以下 SQL 语法编写全文搜索:
SELECT u.usuario AS `id`,
Concat('(', u.usuario, ') ', u.nombre) AS `text`
FROM usuarios AS u
WHERE u.cuenta_id = 10
AND MATCH (u.terminos) against ('jacuna@sgc.gov.co' IN boolean mode)
ORDER BY u.usuario ASC
LIMIT 50
Run Code Online (Sandbox Code Playgroud)
例子:
如果用户的 id 为“123456”,全名为“john doe”,则 MySQL 列“terminos”将包含id + 全名,这意味着“123456 john doe”
注意有时用户 ID 可以是电子邮件,因此,它会有“@”字符。当AGAINST值包含“@”时,我收到此错误:
语法错误,意外的“@”,期望 $end
非常感谢。
将短语放在单引号字符串内的双引号中。
我在 MySQL 5.6 上测试过:
mysql> SELECT u.usuario, terminos
FROM usuarios AS u
WHERE u.cuenta_id = 10 AND
MATCH (u.terminos) AGAINST ('"jacuna@sgc.gov.co"' IN BOOLEAN MODE);
+---------+------------------------+
| usuario | terminos |
+---------+------------------------+
| 1 | call jacuna@sgc.gov.co |
+---------+------------------------+
Run Code Online (Sandbox Code Playgroud)
阅读https://dev.mysql.com/doc/refman/8.0/en/fulltext-boolean.html:
用双引号 (") 字符括起来的短语仅与键入时字面包含该短语的行匹配。全文引擎将该短语拆分为单词,并在 FULLTEXT 索引中执行搜索以查找这些单词。 非单词字符不需要精确匹配:短语搜索只需要匹配与短语完全相同且顺序相同的单词,例如“testphrase”匹配“test,phrase”。
归档时间: |
|
查看次数: |
2412 次 |
最近记录: |