MATCH AGAINST函数双列全文检索失效问题求助
问题解决思路
修正SQL语法错误
你的SQL语句存在语法问题:WHERE子句多了一个未闭合的左括号,正确的查询条件写法应为:WHERE MATCH(title, description) AGAINST(? IN NATURAL LANGUAGE MODE)移除主键索引强制指定语句
代码里的USE INDEX(PRIMARY)会强制数据库使用主键索引,完全跳过了你创建的全文索引,这是多列查询无结果的关键原因之一,直接删除这行即可。确认联合全文索引是否正确创建
仅给title、description分别建单列全文索引的话,MATCH(title, description)的写法不生效,必须创建包含这两列的联合全文索引。执行以下SQL创建:ALTER TABLE feeds ADD FULLTEXT INDEX ft_title_description(title, description);修正后的完整代码
<?php $s = "search keyword"; $query = " SELECT source,title,description,link,pubdate FROM feeds WHERE MATCH(title,description) AGAINST(? IN NATURAL LANGUAGE MODE) LIMIT 40 "; $st = $cn->prepare($query); $st->bind_param("s",$s); $st->execute(); $result = $st->get_result();
内容的提问来源于stack exchange,提问作者redevil
相关产品推荐
相关产品推荐

