使用 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 是主键并且它始终是索引。您也可以对其他列使用常规索引。
我正在尝试使用 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 是主键并且它始终是索引。您也可以对其他列使用常规索引。