[英]Can I use full-text mysql query in subquery in clause from
我想在我的網站上創建搜索系統,但是有一些問題。
我有兩個表,名字分別是商店和產品。 我桌上有一些商店,也許一些商店沒有產品。 如果每個客戶都搜索某詞,如果單詞與商店名稱匹配,則首先查詢商店信息,如果我們有一些商店產品與此單詞匹配,則添加到列表中。 它具有相關性查詢。
我的表引擎是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
您可能需要將FULLTEXT
索引添加到表中。
ALTER TABLE shops
ADD FULLTEXT INDEX (`name`,`nName`);
ALTER TABLE product
ADD FULLTEXT INDEX (`productname`,`productnName`);
編輯:我認為您正在丟失子選擇中的全文本索引,請嘗試一下。
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`,`product`
where
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.