【发布时间】:2015-10-18 12:42:48
【问题描述】:
我想在我的网站上创建搜索系统,但我遇到了一些问题。
我有两张桌子,名字是商店和产品。 我在桌子上有一些商店,也许有些商店有一些产品,也许没有。 如果每个客户搜索的东西如果单词与商店名称匹配,则首先列出商店信息,然后如果我们有一些商店产品与该单词匹配,则添加到列表中。它有一个相关性查询。
我的表引擎是 innodb,版本是 5.6+ 错误消息是:
1214 - 使用的表类型不支持 FULLTEXT 索引
我使用此查询,但我知道它不是真的并且有错误消息,但我不知道如何修复它以执行我的想法。
select `shops`.`name`,`shops`.`nName`,`product`.`productname`,`product`.`productnName`,
((MATCH (`shops`.`name`,`shops`.`nName`) AGAINST ('apple' IN BOOLEAN MODE) * 2) +
(MATCH (`product`.`productname`,`product`.`productnName`) AGAINST ('apple' IN BOOLEAN MODE) * 1.5)) as `relevance`
from `shops` left OUTER JOIN
(select `productname`,`productnName`,`sId` from `product` where MATCH (`productname`,`productnName`) AGAINST ('apple' IN BOOLEAN MODE)) as `product` on (`product`.`sId`=`shops`.`id`)
where
(
MATCH (`shops`.`name`, `shops`.`nName`) AGAINST ('apple' IN BOOLEAN MODE) and
MATCH (`product`.`productname`, `product`.`productnName`) AGAINST ('apple' IN BOOLEAN MODE)
)
or
MATCH (`shops`.`name`, `shops`.`nName`) AGAINST ('apple' IN BOOLEAN MODE)
or
MATCH (`product`.`productname`, `product`.`productnName`) AGAINST ('apple' IN BOOLEAN MODE)
ORDER BY `relevance` DESC
【问题讨论】:
标签: php mysql full-text-search subquery left-join