2010-08-22 72 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

相关问题