Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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
MySQL全文搜索:如何找到搜索查询所在的列?_Mysql_Full Text Search - Fatal编程技术网

MySQL全文搜索:如何找到搜索查询所在的列?

MySQL全文搜索:如何找到搜索查询所在的列?,mysql,full-text-search,Mysql,Full Text Search,这是我的疑问: $sql = "SELECT * MATCH(textEN,textDE,textPT,titlePT,titleDE,titleEN) AGAINST('$search') AS score FROM $main_db.ff_pages WHERE MATCH(textEN,textDE,textPT,titlePT,titleDE,titleEN) AGAINST('$search') ORDER BY

这是我的疑问:

$sql = "SELECT *
          MATCH(textEN,textDE,textPT,titlePT,titleDE,titleEN) AGAINST('$search') AS score
          FROM $main_db.ff_pages
        WHERE MATCH(textEN,textDE,textPT,titlePT,titleDE,titleEN) AGAINST('$search')
        ORDER BY score DESC";
一切正常。正如你所看到的,我有一个多语言网站,这就是为什么我需要知道在哪个列中找到了搜索到的表达式。例如,我想知道,为了在搜索结果中显示该网站的英文版本,在“textEN”一栏中找到了“Solar system”一词


有什么方法可以做到这一点吗?

我认为你必须对每一列分别进行测试(尽管这样做的一个优点是你可以量化每一列对总分的贡献)

最大限度地利用MySQL相关性分数的可加性和确定性函数的缓存,我会:

SELECT   *,
         MATCH(textEN)  AGAINST('$search') AS score_textEN,
         MATCH(textDE)  AGAINST('$search') AS score_textDE,
         MATCH(textPT)  AGAINST('$search') AS score_textPT,
         MATCH(titleEN) AGAINST('$search') AS score_titleEN,
         MATCH(titleDE) AGAINST('$search') AS score_titleDE,
         MATCH(titlePT) AGAINST('$search') AS score_titlePT,
FROM     $main_db.ff_pages
WHERE    MATCH(textEN)  AGAINST('$search')
      OR MATCH(textDE)  AGAINST('$search')
      OR MATCH(textPT)  AGAINST('$search')
      OR MATCH(titleEN) AGAINST('$search')
      OR MATCH(titleDE) AGAINST('$search')
      OR MATCH(titlePT) AGAINST('$search')
ORDER BY score_textEN  + score_textDE  + score_textPT
         score_titleEN + score_titleDE + score_titlePT DESC

如果有多个匹配怎么办?那么我想知道每个匹配的结果。。。