我试图从表格行中获得单个结果
我正在使用此查询
"SELECT * FROM $tableName WHERE MATCH(nombre, mat1, mat2, mat3, mat4, mat5, mat6, mat7)
AGAINST ('$busqueda' IN BOOLEAN MODE)
ORDER BY nombre";
如果在任何字段中找到$busqueda
,这显然会选择该行的所有字段。
有没有办法只选择找到搜索词的字段?
答案 0 :(得分:1)
MATCH(nombre, mat1, mat2, mat3, mat4, mat5, mat6, mat7)
充当单个索引字段,因此当某些文本与之匹配时,它无法告诉您哪个位。
您仍然可以匹配完整点差以获得匹配速度,并对字段列表中的每个字段使用单独的MATCH()
次调用(在SELECT
之后代替*
})检查某个级别的相关性,以便检测哪个字段匹配。
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
并不是绝对的要求。