gpt4 book ai didi

MySQL 全文搜索 : how to find out in which column the search query has been found?

转载 作者:行者123 更新时间:2023-11-30 23:31:02 25 4
gpt4 key购买 nike

这是我的查询:

$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”,以便在搜索结果中显示该站点的英文版本。

有什么办法吗?

最佳答案

我想你必须执行 MATCH() ... AGAINST分别针对每一列(尽管这样做的一个优点是您可以量化每一列对总分的贡献)。

最大限度地利用 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

关于MySQL 全文搜索 : how to find out in which column the search query has been found?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10642993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com