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
如果有多个匹配怎么办?那么我想知道每个匹配的结果。。。