現在、ウェブクロールの結果をデータベースに保存する方法を考えています。別の質問では、ドキュメント指向のデータベースを Web クローラー プロジェクトに使用することが推奨されていました。Python の Web クローラー用データベース?
map/reduce がそのような分類と値の生成に正しい方法であるかどうか疑問に思っています。少なくとも、そのようなことはできるようです (年や著者などの分類のみの map と、現時点では例が思いつかない数値の計算のための map/reduce)。
しかし、map-reduce / DocumentStores は、特定の単語に対して適切なドキュメントを提供することもできますか? リレーショナル データベースでは、いくつかのテーブルで JOIN を使用し、次の単語を含むドキュメントを取得する必要があります。
SELECT * FROM docs d
JOIN doc_words dw ON dw.doc_id = d.id
JOIN words w ON dw.word_id = w.id
WHERE w.word = 'foo'
DocumentStores はフルテキスト インデックスをサポートしておらず、多くの参照/関係を持つことを意図していないため、そのような操作はできないと思います。
より良い代替手段は、複数のシステムを混合することでしょうか? たとえば、単語で検索するもの、存在する場合は別の値 (発行年、著者など) で検索するものはありますか? 特定の値がある場合とない場合があるため、DocumentStores はメタデータの保存にはそれほど悪くないと思います (また、DocumentStores は、必要に応じて複数のサーバー間で簡単に使用できます。1 つのサーバーに対してドキュメントが多すぎる場合)。それでも、ドキュメントのコレクション (Web ページ、PDF、画像など、メタデータは常に異なりますが、全文索引も必要になることがよくあります) の検索を実装するための最良の方法はわかりません。
明確な質問をするために: DocumentStores と一緒に別のデータベース システムを使用する必要がありますか、DocumentStores を単独で使用する必要がありますか (単語をすばやく検索するには?)、または別の DB システムを単独で使用しますか?
PS: このような問題の別の例として、Web ページ間のリンクがありますが、これも DocumentStore にうまく保存できません。しかし、OrientDB は、グラフ データベースとドキュメント指向データベースを組み合わせたように見えるため、この問題を解決する可能性があります。