在布尔模式下使用时找不到全文索引



我试图用MATCH ... AGAINSTWHERE子句过滤一些数据。但我得到以下错误:

找不到与列列表匹配的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

正如你所看到的,我是不是像Dan Grossman所说的那样,在AGAINST中使用IN BOOLEAN MODE来克服这个问题,但它不起作用。

我是错过了什么,还是我做得完全错了?

有一点需要注意的是,select(以及MATCH部分)是在PHP

中动态创建的

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

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

  • 存储引擎等

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

现在说到这里,它会不会把其他索引搞砸,不会,你的id是主键,它总是索引。您也可以对其他列使用常规索引。

相关内容

  • 没有找到相关文章

最新更新