私は、すべての例が Python と sqllite で行われている本Programming Collective Intelligenceを読んでいます。ただし、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 で、2 番目と 3 番目の数字は、その特定のドキュメント内の各単語の位置を表します。
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 コードを問題なく生成できます。ただし、関連する getmatchrows PHP 定義を SQL クエリに追加するための提案がある場合は、それを共有してください。