我正在阅读Programming Collective Intelligence一书,其中所有示例都是用 Python 和 sqllite 完成的。但是,我在 PHP / MYSQL 中做所有的例子。
第 4 章第 63 和 64 页讨论如何从搜索中检索结果。具体来说,它检索其相关文本包含搜索短语中的所有单词的文档 id,并返回该 id 以及每个单词在文本中的位置。
值得庆幸的是,这些页面和代码可在线免费参考。这是第 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 定义有建议,请分享。