2015-06-23 36 views
1

我試圖用MATCH ... AGAINSTWHERE子句過濾一些數據。但我得到以下錯誤:在使用IN BOOLEAN模式時找不到FULLTEXT索引

Can't find FULLTEXT index matching the column list

這是一個查詢我執行:

SELECT PAR.idPartij, 
     PAR.Partijnaam, 
     PRO.Productnaam, 
     PER.Perceel, 
     R.Ras, 
     PAR.TagNR 
FROM Partij AS PAR 
LEFT OUTER JOIN Product AS PRO ON PAR.idProduct = PRO.idProduct 
LEFT OUTER JOIN Ras AS R ON PAR.idRas = R.idRas 
LEFT OUTER JOIN Klasse AS K ON PAR.idKlasse = K.idKlasse 
LEFT OUTER JOIN Perceel AS PER ON PAR.idPerceel = PER.idPerceel 
LEFT OUTER JOIN Maat AS M ON PAR.idMaat = M.idMaat 
LEFT OUTER JOIN Teler AS T ON PAR.idTeler = T.idTeler 
LEFT OUTER JOIN Handelshuis AS H ON PAR.idHandelshuis = H.idHandelshuis 
LEFT OUTER JOIN Behandeling AS BH ON PAR.idBehandeling = BH.idBehandeling 
WHERE PAR.Actief <> 0 
    AND (
      MATCH(PAR.idPartij) AGAINST ('%1423%' IN BOOLEAN MODE) 
     OR MATCH(PAR.Partijnaam) AGAINST ('%1423%' IN BOOLEAN MODE) 
     OR MATCH(PRO.Productnaam) AGAINST ('%1423%' IN BOOLEAN MODE) 
     OR MATCH(PER.Perceel) AGAINST ('%1423%' IN BOOLEAN MODE) 
     OR MATCH(R.Ras) AGAINST ('%1423%' IN BOOLEAN MODE) 
     OR MATCH(PAR.TagNR) AGAINST ('%1423%' IN BOOLEAN MODE) 
) 
ORDER BY PAR.idPartij 

正如你所看到的,我使用了AGAINSTIN BOOLEAN MODEDan Grossman說來克服這個問題,但它不工作。

我錯過了什麼,或者我是否完全錯誤?

一個小側面說明,選擇(因此比賽的一部分)在PHP動態創建

+1

您是否爲這些表上的指定字段創建了全文索引? –

+0

@AbhikChakraborty不,我沒有。我認爲「IN BOOLEAN MODE」會克服這一點。另外,當我創建這些索引。它會搞砸任何其他索引(如在ID的例如...) – Mathlight

+1

有很多因素,爲什麼在布爾模式不像你的MySQL版本,存儲引擎等工作。但強烈建議您使用全文索引,當你正在做'匹配..反對'。現在到了這一點,它會混淆其他索引,不,它不會是你的ID是主鍵和它的始終索引。您也可以使用其他列的常規索引。 –

回答

1

可能有很多的幾個因素,爲什麼在boolean mode不工作

  • 像MySQL版本你有,

  • 存儲引擎等

但是,強烈建議您在做match .. against時使用全文索引,因爲這是它的意思。

現在到了這一點,它會混淆其他索引,不,它不會是你的id是主鍵和它的始終索引。您也可以使用其他列的常規索引。