2010-08-22 73 views
1

你好我」試圖從聯接的列選擇:是否可以對連接的列執行全文搜索?

SELECT 
    A.idAd, 
    A.ads_in_Cat, 
    A.title, 
    A.currency, 
    A.price, 
    A.in_dpt, 
    A.description, 
    D.*, 
    S.* 
FROM ads A 
LEFT JOIN dept D ON D.id_dept = A.in_dpt 
LEFT JOIN sub_cat_ad AS ON S.id_sub_cat = A.ads_in_Cat 
WHERE MATCH(A.title, A.description) AGAINST(:searchTerm) 
    OR MATCH (S.sub_cat_name) AGAINST(:searchTerm) 

可能有人請告訴我爲什麼MySQL的回報:1191無法找到FULLTEXT指數...列列表匹配,除非我用布爾模式?

PS表S具有爲每個柱定義的全文。 MySQL的版本49年1月5日

+0

我注意到你後'A.title'缺少一個逗號,但我懷疑這就是問題的原因。 – 2010-08-22 20:14:59

+2

是的,這會以完全不同的方式使查詢崩潰。我編輯並添加了逗號。 – 2010-08-22 20:17:14

+0

對於這個問題,你有'WHERE MATCH(A.titlee,'而不是'WHERE MATCH(A.title,'。我假設這不是查詢的直接複製和粘貼。如果可以的話,也許你應該取代這個例子與一個真正的副本和粘貼? – 2010-08-22 20:18:15

回答

1

你仍然可以得到,當你使用錯誤:

SELECT A.idAd, 
      A.ads_in_Cat, 
      A.title, 
      A.currency, 
      A.price, 
      A.in_dpt, 
      A.description, 
      D.*, 
      s.* 
    FROM ads A 
LEFT JOIN dept D ON D.id_dept = A.in_dpt 
LEFT JOIN sub_cat_ad s ON s.id_sub_cat = A.ads_in_Cat 
         AND MATCH (s.sub_cat_name) AGAINST(:searchTerm) 
    WHERE MATCH(A.title, A.description) AGAINST(:searchTerm) 
+0

感謝OMG Ponies,是的,我仍然得到了同樣的錯誤。 – jartaud 2010-08-22 20:25:22

+0

@jartaud:如果所有的'sub_cat_ad'都不包含FTS ?幫助您瞭解您正在測試的搜索字詞 – 2010-08-22 20:27:17

+0

POnies是的,可以讓用戶按標題,說明或只輸入類別名稱進行搜索 – jartaud 2010-08-22 20:28:58

相關問題