2

我正在尝试从表格行中获取单个结果

我正在使用这个查询

"SELECT * FROM $tableName WHERE MATCH(nombre, mat1, mat2, mat3, mat4, mat5, mat6, mat7) 
AGAINST ('$busqueda' IN BOOLEAN MODE) 
ORDER BY nombre";

$busqueda如果在任何字段中找到,这显然会选择该行的所有字段。

有没有办法只选择找到搜索词的字段?

4

1 回答 1

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如果我没记错的话,这不是绝对的要求。

于 2010-12-06T18:43:50.280 回答