gpt4 book ai didi

php - MySQL搜索多个表的信息

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

我正在构建一个搜索功能,用户可以在其中选择不同的库以使用提供的关键字进行搜索。还支持 AND 运算符。我的问题是,当我尝试搜索信息时,它会以某种方式成倍增加或呈指数增长??

我正在使用 MySQL 数据库和 PHP 来处理结果。

一个示例查询看起来像这样,为便于阅读而采用的示例表名:

SELECT table1.id AS table1_id,
table2.id AS table2_id,
table1.*,
table2.*
FROM table1, table2
WHERE (table1.column1 LIKE '%key%' OR table1.column2 LIKE '%key%') OR
(table2.column1 LIKE '%key%' OR table2.column2 LIKE '%key%')

或者当用户提供诸如“key AND yek”之类的关键字时,查询将如下所示:

SELECT table1.id AS table1_id,
table2.id AS table2_id,
table1.*,
table2.*
FROM table1, table2
WHERE ( (table1.column1 LIKE '%key%' AND table1.column2 LIKE '%key%') OR
(table1.colum1 LIKE '%yek%' AND table1.colum2 LIKE '%yek%') )
OR
(( table2.column1 LIKE '%key%' AND table2.column2 LIKE '%key%') OR
(table2.colum1 LIKE '%yek%' AND table2.colum2 LIKE '%yek%') )

我四处搜索并遇到了 UNION,但这并不能解决问题。首先,因为我查询的表不相等,而且这是一个非常昂贵的查询。也因为搜索功能将经常使用,所以它不是一个选项。

事实上,我正在查询 5 个表,每个表在 2 或 4 列之间。我在其中一个表中设置了一个具有唯一值的测试行,因此我应该得到 1 行作为结果,但实际上我得到的更多。当我选择所有 5 个表时,我得到超过 10K 个结果行。所以我的猜测是结果以某种方式成倍增加。我玩过运算符 AND 和 OR,但到目前为止没有任何运气。

有人可以帮助我进一步“寻求”在网络应用中构建用户友好的搜索引擎吗?

最佳答案

你应该看看真正的全文搜索引擎,周围有很多:

  • lucene
  • sphinx
  • Mysql : MySQL 有一个全文搜索引擎,但它有点慢,所以如果你想要一个快速的解决方案,我不建议你分开使用它
  • couchDB :那不是真正的全文搜索引擎,但在您的情况下它可能会有所帮助,但您可以从当前的 MySQL 数据库创建一个数据库并将其仅用于搜索目的。

根据表格的制作方式,您可能希望创建一个包含所有所需信息的表格。

关于php - MySQL搜索多个表的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1797295/

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