はMATCH(nombre, mat1, mat2, mat3, mat4, mat5, mat6, mat7)
単一のインデックス フィールドとして機能するため、一部のテキストがそれに一致する場合、どのビットかを通知する機能がありません。
このように、一致の速度を向上させるために完全なスプレッドと照合MATCH()
し、フィールド リストの各フィールドに対して個別の呼び出しを使用して ( SELECT
in の代わりに*
)、特定のレベルの関連性をチェックして、どのフィールドが一致したかを検出することができます。
SELECT
IF(MATCH(nombre) AGAINST ('search phrase' IN BOOLEAN MODE) > 0.9, nombre, NULL) AS nombre,
IF(MATCH(mat1) AGAINST ('search phrase' IN BOOLEAN MODE) > 0.9, mat1, NULL) AS mat1
/* etc */
FROM myTable
WHERE MATCH(nombre, mat1, mat2, mat3, mat4, mat5, mat6, mat7)
AGAINST ('search phrase' IN BOOLEAN MODE)
ORDER BY nombre
一致しないフィールドには NULL が返されますFULLTEXT
。個々のフィールドにもインデックスが必要な場合があることに注意してください。BOOLEAN MODE
私の記憶が正しければ使用する場合、それは絶対的な要件ではありません。