我正在尝试在我的网站上设置搜索功能。我有一个名为项目的表,其中包含以下内容:
+----+--------+------------------------------------------------------------+--------------+--------+----------+---------+------------+
| id | name | description | creator | visits | file | version | date |
+----+--------+------------------------------------------------------------+--------------+--------+----------+---------+------------+
| 16 | test 1 | <h1>This is a test thing.</h1>
<h3>The file is blank.</h3> | warriorjacq9 | 1 | imported | 0 | 2022-09-23 |
+----+--------+------------------------------------------------------------+--------------+--------+----------+---------+------------+
当我运行这个 sql 查询时:
SELECT * FROM projects WHERE MATCH(name, creator) AGAINST ('*warr*');
它返回一个空集。但是,当我将“warr”更改为“warriorjacq9”时,它会返回该行。我想知道为什么会发生这种情况,如果有不同的方式我应该这样做以使其按我想要的方式工作。
FULLEXT
不处理前导通配符。LIKE
和REGEXP
,虽然速度较慢,但确实如此。因此,要么限制用户提供单词的开头并使用 FULLTEXT,要么使用其他查询。