gpt4 book ai didi

php mysql全文搜索通过id连接的多个表

转载 作者:行者123 更新时间:2023-11-29 04:41:00 25 4
gpt4 key购买 nike

我已经阅读了一段时间的全文搜索,我已经阅读了一些文章,说这是可能的,但他们没有提供示例查询,

我一直在寻找解决方法,了解如何使用全文搜索在由 ID 连接的多个表上进行搜索

这是我缩小后的表格

enter image description here

这是我目前所拥有的

    $users = User::select('users.*','departments.department_name')
->join('departments', 'departments.id', ' =', 'users.dept_id')
->whereRaw(
"MATCH(user_name) AGAINST(? IN BOOLEAN MODE)",
array($q)
)
->paginate(10);
}

如何在搜索时包含 department_name?请帮助,提前致谢

最佳答案

您可以创建一个“物化 View ”。 http://en.wikipedia.org/wiki/Materialized_view

基本上是一个表,它是 JOIN 的结果,并在其上创建全文索引。

CREATE TABLE materialized (FULLTEXT idx (user_name,department_name)) 
SELECT u.id,user_name,department_name
FROM users u INNER JOIN departments d ON (d.id = dept_id)

然后您可以改为对该表运行查询。

SELECT * FROM materialized WHERE MATCH(user_name,department_name) AGAINST('test' IN BOOLEAN MODE)

但是……

您将需要定期更新表(或当基础表更新时)- 最简单的方法是 DROP 并重新创建 - 或者您可以使用 TRUNCATE 然后 INSERT INTO ... SELECT ... FROM ... 格式。

(更详细的方案涉及触发器以保持“ View ”更新,甚至查看二进制日志,并根据“ View ”重放更新)

关于php mysql全文搜索通过id连接的多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28448152/

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