Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择单个找到的结果,并对其进行匹配_Php_Mysql_Match_Against - Fatal编程技术网

Php 选择单个找到的结果,并对其进行匹配

Php 选择单个找到的结果,并对其进行匹配,php,mysql,match,against,Php,Mysql,Match,Against,我试图从表行中获得一个结果 我正在使用这个查询 "SELECT * FROM $tableName WHERE MATCH(nombre, mat1, mat2, mat3, mat4, mat5, mat6, mat7) AGAINST ('$busqueda' IN BOOLEAN MODE) ORDER BY nombre"; 如果在任何字段中找到$busqueda,这显然会选择该行的所有字段 有没有办法只选择搜索词所在的字段?匹配(nombre、mat1、mat2、mat3、mat

我试图从表行中获得一个结果

我正在使用这个查询

"SELECT * FROM $tableName WHERE MATCH(nombre, mat1, mat2, mat3, mat4, mat5, mat6, mat7) 
AGAINST ('$busqueda' IN BOOLEAN MODE) 
ORDER BY nombre";
如果在任何字段中找到
$busqueda
,这显然会选择该行的所有字段

有没有办法只选择搜索词所在的字段?

匹配(nombre、mat1、mat2、mat3、mat4、mat5、mat6、mat7)充当单个索引字段,因此当某些文本与之匹配时,它无法告诉您哪个位

您仍然可以像这样匹配整个排列的匹配速度,并对字段列表中的每个字段使用单独的
match()
调用(在
选择
代替
*
之后),检查特定级别的相关性,以检测匹配的字段

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
不匹配的字段将返回空值,请注意,您可能也希望对单个字段使用
FULLTEXT
索引。如果我没记错的话,使用
布尔模式
不是绝对要求。

$busqueda=“”;