0

.Net プラットフォームで「リアルタイム」検索エンジンを作成する方法について教えてください。Web のほぼリアルタイムの検索は最近非常に人気があり、アイデアのブレインストーミングを手伝ってくれることを期待していました。最終的には試作品を作ることもあるかもしれませんが、ほとんどは「メンタルトレーニング」です。

要件は次のとおりです。

  1. .NET プラットフォーム、IIS、MS SQL サーバー、または Lucene.Net (ファイル システム)
  2. 索引付けされる入力データは、キーワードと一部のメタ情報のみです。これ以上の処理は必要ありません
  3. データはキーワードごとにグループ化され、キーワードの出現回数によって並べ替えられます
  4. 履歴データは保持されません (一定期間より古いデータは破棄されるか、他のデータ ストアに移動されます)。

主題についてあまり知らないので、これは私がこれまでに思いついたものです:

データは、Web サービスを介してシステムに供給されます。データはすでにキーワードの形式になっているため、それ以上の処理は実行されません。WS はデータを db に保存します。選択クエリは一定の時間間隔で実行され、データが返されます (たとえば、過去 1 時間の受信データをクエリし、毎秒クエリを実行します)。グループ化と並べ替えはメモリ内で実行され、SQL サーバーの負荷を軽減します。db の古いデータは数分ごとに破棄されます。多くの新しい行が常に追加された場合、SQLサーバーがそれをどのように処理するかわかりません。グループ化およびソートされたデータが表示されます。

皆さんは、この種のことについて、より多くの経験とより良いアイデアを持っていると確信しています。

よろしく、

オンドレイ

4

2 に答える 2

1

システムの説明から、最低限のデータベース スキーマは次のようになります。

キーワード - id (主キー) - キーワード (一意)

入力 - id (主キー) - データ (テキスト)

input_keyword - id (主キー) - input_id (外部キー) - keyword_id (外部キー) - count (整数; ID keyword_id を持つキーワードが ID input_id を持つ入力に現れる回数) - expire_date (タイムスタンプ; 一定の間隔で、すべてのエントリ有効期限が切れているものは削除する必要があります)

データ操作は次のようになります。

  1. 書き込み: 入力操作が実行されるたびに、データベース エンジンは 3 つのテーブルすべてに書き込む書き込み操作を処理する必要があります。
  2. 読み取り: 検索操作が実行されるたびに、データベース エンジンは 3 つのテーブルすべてで読み取り操作を処理する必要があります。
  3. 削除: 定期的に、input_keyword のエントリと、必要に応じてキーワード テーブルを削除する必要があります。

トラフィックの多いシステムでは、データベースが頻繁にヒットします。これらのテーブル全体で SELECT 操作を実行するためにデータベースを実際に使用しているだけであり、データの寿命が非常に短いため、メモリ内データ構造を使用して「キーワード」と「 input_keyword」テーブルを使用して、ディスクへのヒットを排除します。これには、より複雑なアプリケーション コードが必要になる場合がありますが、ビジーなシステムでは価値があるかもしれません。

于 2009-11-08T04:39:59.130 に答える
0

このサイトは、ブレインストーミングやアプリケーションの設計を支援するためのものではありません。

これをhttp://answers.onstartups.com/に投稿して、リアルタイム Web 検索にビジネス上の意味があるかどうかを確認するために、このアイデアの要件と提案を確認してください。

ただし、どうすれば Google よりも速く進むことができるかを判断する必要があります。

于 2009-11-08T04:20:54.943 に答える