gpt4 book ai didi

php - 来自 Programming Collective Intelligence 一书第 4 章,此查询的 MySQL 等价物是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 12:26:26 25 4
gpt4 key购买 nike

我正在看书Programming Collective Intelligence所有示例都是用 Python 和 sqllite 完成的。然而,我正在用 PHP/MYSQL 做所有的例子。

第 4 章第 63 和 64 页讨论了如何从搜索中检索结果。具体来说,它会检索相关文本包含搜索短语中所有单词的文档 ID,并返回该 ID 以及每个单词在文本中的位置。

幸运的是,这些页面和代码是 available online for free for reference.这是第 64 页的查询:

select w0.urlid,w0.location,w1.location
from wordlocation w0,wordlocation w1
where w0.urlid=w1.urlid
and w0.wordid=10
and w1.wordid=17

这是书中的示例结果集,其中第一个数字是文档的 ID,第二个和第三个数字代表每个单词在该特定文档中的位置。

e.getmatchrows('functional programming')
([(1, 327, 23), (1, 327, 162), (1, 327, 243), (1, 327, 261),
(1, 327, 269), (1, 327, 436), (1, 327, 953),..

我对数据库一无所知,所以这个查询让我有点困惑。我如何在 MySQL 中编写它?

我对我的 PHP 很有信心,而且我知道一旦我理解了 SQL 以及如何动态构建它,我就可以毫无问题地为 getmatchrows() 函数生成 PHP 代码。但是,如果您对伴随 SQL 查询的相关 getmatchrows PHP 定义有建议,请分享。

最佳答案

尽管更现代的语法使用显式连接,但该查询将起作用:

SELECT w0.urlid, w0.location, w1.location
FROM wordlocation w0
JOIN wordlocation w1 ON w0.urlid = w1.urlid
WHERE w0.wordid = 10
AND w1.wordid = 17

再多的话就是:

SELECT w0.urlid, w0.location, w1.location, w2.location, w3.location, w4.location
FROM wordlocation w0
JOIN wordlocation w1 ON w0.urlid = w1.urlid
JOIN wordlocation w2 ON w0.urlid = w2.urlid
JOIN wordlocation w3 ON w0.urlid = w3.urlid
JOIN wordlocation w4 ON w0.urlid = w4.urlid
WHERE w0.wordid = 10
AND w1.wordid = 17
AND w2.wordid = 101
AND w3.wordid = 25
AND w4.wordid = 4

关于php - 来自 Programming Collective Intelligence 一书第 4 章,此查询的 MySQL 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17416645/

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