使用 IN BOOLEAN MODE 时找不到 FULLTEXT 索引

Can't find FULLTEXT index while using IN BOOLEAN MODE

我正在尝试使用 MATCH ... AGAINST WHERE 子句过滤一些数据。但是我收到以下错误:

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

如您所见,我是否使用 AGAINST 中的 IN BOOLEAN MODE 来解决 Dan Grossman 所述的问题,但它不起作用。

我是漏掉了什么还是完全错了?

一点旁注,select(以及 MATCH 部分)是在 PHP

中动态创建的

boolean mode 无法正常工作的原因可能有很多

  • 喜欢 mysql 版本,

  • 存储引擎等

但是,强烈建议您在执行 match .. against 时使用全文索引,因为这就是它的用途。

现在进入正题,它会不会弄乱其他索引,不,不会,你的 id 是主键并且它始终是索引。您也可以对其他列使用常规索引。