2

たとえば、eBay (または何か) のようなマーケットプレイスを構築しているとします。

次のようなデータ (疑似コード) を使用します。

public class Item {
    Double price;
    String geoHash;
    Long startAvailabilty; // timestamp
    Long endAvailabilty; // timestamp
    Set<Keywords> keywords;
    String category;
    String dateCreated; // iso date
    String dateUpdated; // iso date
    Integer likes;
    Boolean isActive;
}

次のようにアイテムをフィルタリングする「クエリ」を作成したいとします。

アイテムは、フィールド データ (タイトル、価格、タイムスタンプの範囲) といくつかのテキスト (説明) と共に保存されます。次に、以下に基づいてフィルタリングする必要があります。

  • 価格帯 (例: 100-200)
  • 場所 (例: GeoHash プレフィックスで始まる)
  • 指定されたミリ秒のタイムスタンプの間 (たとえば、各レコードには開始日と終了日があります) -- アイテムの有効期間など
  • 特定のキーワードがある (各レコードには、保存前に前処理されたキーワードの配列があります)
  • 特定のカテゴリがある
  • 作成日と更新日がある (これはよくあることです)
  • 特定のキーワード テキストがある (これは全文検索であるため、これは実際には不可能だと思います)

そして、以下に基づいて結果を注文したいと思います。

  • 最初にいいねの数 (各レコードにはいいねの数が保存されます)
  • 最新または最近作成されたものが最初
  • まだアクティブです (アクティブかどうかにかかわらず、各レコードにはブール値があります)

上記の特定のクエリを使用して取得できるように、これをどのようにモデル化/キー値データベースに格納する必要がありますか? つまり、スキーマを使用しない (スキーマレス)

4

1 に答える 1