簡體   English   中英

我可以在子句中的子查詢中使用全文MySQL查詢嗎

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM