亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mysql查詢的對稱差異或析取聯合

mysql查詢的對稱差異或析取聯合

PHP
DIEA 2022-10-28 16:09:22
如果客戶搜索兩個或多個關鍵字,我需要返回兩組 MySQL 結果:1)主要結果:這些關鍵字的交集(僅匹配所有關鍵字的項目)2)次要結果:匹配關鍵字的對稱差/析取并集的項目(匹配部分但不是所有關鍵字的項目)我可以使用 BOOLEAN 模式執行查詢 #1 +,每個關鍵字前都有一個符號。我可以通過關閉簽名來執行包含#1 和#2 的查詢+,但我不知道如何獲得#2 中描述的所需結果。有什么建議么?
查看完整描述

1 回答

?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

對于#2,您只需要以下組合:


WHERE MATCH(words) AGAINST('keyword1 keyword2 ... keywordN' IN BOOLEAN MODE)

AND NOT MATCH(words) AGAINST('+keyword1 +keyword2 ... +keywordN IN BOOLEAN MODE)

這將返回至少有一個關鍵字但不是全部的行。還是我誤解了你的問題?


架構 (MySQL v8.0)


create table test (

  id int not null auto_increment primary key,

  words text not null,

  FULLTEXT idx (words)

  );


  insert into test(words)

     values('Arc Book Cow Dog'), ('Book Cow Fox'), ('Arc Book Cow Fox'), ('Book Cow');

查詢 #1


SELECT *

FROM test

WHERE MATCH(words) AGAINST('Arc Fox' IN BOOLEAN MODE)

      AND NOT MATCH(words) AGAINST('+ARC +Fox' IN BOOLEAN MODE)

ORDER BY id;


| id  | words            |

| --- | ---------------- |

| 1   | Arc Book Cow Dog |

| 2   | Book Cow Fox     |


查看完整回答
反對 回復 2022-10-28
  • 1 回答
  • 0 關注
  • 125 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號