我正在尝试从表格行中获取单个结果
我正在使用这个查询
"SELECT * FROM $tableName WHERE MATCH(nombre, mat1, mat2, mat3, mat4, mat5, mat6, mat7)
AGAINST ('$busqueda' IN BOOLEAN MODE)
ORDER BY nombre";
$busqueda
如果在任何字段中找到,这显然会选择该行的所有字段。
有没有办法只选择找到搜索词的字段?
充当单个索引字段,因此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
如果我没记错的话,这不是绝对的要求。