gpt4 book ai didi

mysql - 无法让 MATCH AGAINST 与通配符一起使用

转载 作者:行者123 更新时间:2023-11-29 04:43:15 24 4
gpt4 key购买 nike

老读者,第一次在这里提问。

我正在整理一个 MySQL 书籍数据库作为一个学习项目。我正在尝试使用 PHP 和 MySQL 实现全文搜索。到目前为止它工作正常,但是 * 截断运算符没有按预期工作。为简单起见,我将省略 PHP,因为当我在 PhpMyAdmin 中运行查询时,行为也是相同的。

    SELECT * FROM Mainbooks WHERE MATCH(Title,Author,Description) AGAINST('blaze')

返回包含 Richard Bachman 的“Blaze”条目的一行,但是

    SELECT * FROM Mainbooks WHERE MATCH(Title,Author,Description) AGAINST('blaz*')

不返回任何行。再举个例子,

    SELECT * FROM Mainbooks WHERE MATCH(Title,Author,Description) AGAINST('Sacks')

返回包含 Oliver Sacks 的“Migraine”的行,但是

    SELECT * FROM Mainbooks WHERE MATCH(Title,Author,Description) AGAINST('Sack*')

不返回任何行。一个稍微不同的情况是

    SELECT * FROM Mainbooks WHERE MATCH(Title,Author,Description) AGAINST('blaze*')

或者 SELECT * FROM Mainbooks WHERE MATCH(Title,Author,Description) AGAINST('migraine*')

两者都返回结果,显然忽略了 * 字符。我在 MAMP 中运行它,如果这有什么不同的话。

我错过了什么?

最佳答案

使用*运算符时需要使用BOOLEAN MODE

http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html

SELECT * FROM Mainbooks 
WHERE MATCH(Title,Author,Description) AGAINST('blaz*' IN BOOLEAN MODE)

关于mysql - 无法让 MATCH AGAINST 与通配符一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24084404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com