1

ravendbを使用してアラートシステムを構築したい。

実際、私は次のように本を保管しています。

public class Book
{
    public string Id { get; set; }
    public string Title { get; set; }
    public string Description {get;set;}
}

ユーザーは、本のタイトルと説明に一致するアラートを作成できます。

アラートは次のように定義されます:

public class Alert
{
    public string UserId{get;set;}
    public string Keywords{get;set;}
}

本が投稿されたとき、または一部が編集されてから一致するユーザーアラートが発生した場合、ユーザーに通知する内容(電子メールなど)。

したがって、本が投稿または編集されるたびにすべてのアラートをループせずに効率的なアラートシステムを作成し、一致する本を取得するために検索クエリを実行するためのベストプラクティスはありますか?

編集:本が投稿または編集されたときに通知を受け取るためにRhino.ESBを使用しています。私の質問は、本の更新の通知を受け取る方法についてではありません。しかし、実際には、本をそれらの更新に関するアラートと効率的に一致させる方法。

編集:StackOverFlowは、タグのサブスクリプションメカニズムを使用して、これらのタグに関連する質問を含むユーザーの電子メールを送信しているようです。このメカニズムの簡単な説明は始まりです。何か案が ?

ありがとう。

4

1 に答える 1

1

ヨアン、

あなたは基本的に逆検索を行います。

public void Handle(BookUpdated msg)
{
    var book = Session.Load<Book>(msg.BookId);
    var alerts = Session.Query<Alerts>()
        .Search(x=>x.Keywords, book.Description)
        .ToList();



    // alert for book


}

ページングを適切に行う必要があることに注意してください。また、本のアラートが大量にある場合に何が起こるかを検討してください。

于 2012-04-27T23:01:09.737 に答える