検索エンジンを開発する場合は、スケーラビリティについて非常に高速に考える必要があります。検索関連の環境での並べ替えはよく知られている問題です。あなたは、Googleの検索実装を見てください!ソート方法はranking algorithmに依存します。ドメイン中心のランク付けアルゴリズム設計は、サービスアプローチとしてのランク付けと大きく異なるべきではありません。
ご使用の言語はあなたの選択です。分散コンピューティングの場合はC/C++ Message Passing Interface(MPI)を選択します。 Javaを使用する場合は、JMSとGridGain(GridGainはGoogleのMapReduceを実装しています)をご覧ください。
もう1つの質問は、データの保存方法(分散、高速、フォールトトレラント)です。 Javaの場合、DDDに関する問題については
。the high scalability websiteで続きを読む、Googleのアーキテクチャの詳細については
。あなたが自由のために得ることができる最高のシステムの一つである(
Project Voldemordを見て顔をしています
dddcommunity.orgで、エリック・エヴァンス自身のホームページ;)彼は非常に良い本
Domain-Driven Designを書いています。 DDDは、ドメインの完全性とドメインを保証するので、問題ありません。
単純なモデルは次のようになります。
page (URL url, BigInt rank, List<String> keywords,
List<URL> links, List<URL> outLinks, Content ref)
content (GzippedBytes[] content)
新しいノードがシステムに追加されている場合は、それはそれはそれ自身によって、ページランクだ得ることができるので、それは「SETLINKS」などのようなものに反応する必要があります。
クライアントは簡単ですが、の検索(キーワード)はPageRankでソートされています。
ここにはサービスexample of a pagerank implementationのJavaがあります。
検索エンジンでは、Webクローラー/インデクサーを意味しませんでした。指定されたビジネスオブジェクトに対する通常の検索メカニズムであるはずです。 –
現在の検索方法には、次のシグネチャがあります。 Get(文字列searchColumn、文字列クエリ、文字列orderExpr、int startIndex、int maxRows、bool useRanks、int authorRank、int titleRank、int otherRank)。 –
UIレイヤーはデータベース構造については何も知らず、結果ページをソートできることを確認する方法はわかりません。 :) –