1

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

找不到与列列表匹配的 FULLTEXT 索引

这是我执行的查询:

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

如您所见,我是否使用IN BOOLEAN MODE内部来克服Dan GrossmanAGAINST所说的这个问题,但它不起作用。

我错过了什么还是我做错了什么?

附带说明一下,选择(以及 MATCH 部分)是在 PHP 中动态创建的

4

1 回答 1

1

boolean mode不工作的原因可能有很多

  • 就像你拥有的mysql版本一样,

  • 存储引擎等

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

现在说到这一点,它会弄乱其他索引,不,你的 id 不会是主键,它总是索引。您也可以对其他列使用常规索引。

于 2015-06-23T08:46:03.473 回答