搜索满足搜索条件的用户

时间:2016-10-19 00:57:00

标签: java algorithm design-patterns database-design

我正在研究用户在SQL中注册年龄,肤色,语言,高度等属性的项目。

我想为接受范围值的注册用户提供搜索功能。示例搜索15至20岁之间的用户,他们可以说英语和法语,肤色为黑色。此请求也必须存储在SQL中。

执行此操作的一种方法是: 提供基于被搜索属性构造的请求对象。 像

searchUsersRequest : {
"age" : {
         "min" : 15
         "max" : 20
        },
 "languages" : [
          "English",
          "French"
        ],
 "skinColor" : [
           "Brown",
           "Black"
        ],
  .
  .
  .
  .
}

阅读请求后,创建查询并在db。上运行。

以下是两个问题:

  1. 有没有更好的方法/通用方法来解决这个问题?

  2. 我应该如何在DB中存储此请求对象?我应该只将它存储为一个字符串或任何其他更好的方式吗?

  3. 提前感谢您的建议!

1 个答案:

答案 0 :(得分:0)

1)让我们假装您有一个请求对象SearchUsersRequest,其中包含构建查询所需的所有信息。 这个对象可以被解析"如果您使用的是ORM,则会自定义FilterBuilder来构建原始查询或更复杂的QueryFilter。 谈到通用方法,您可以抽象"搜索请求" teautures到自定义类hieracy并使用它来为您的FilterBuilder方法定义特定参数。

2)为什么需要将其存储到数据库中?这不是一种常见的方法。但是,如果它是强制性要求,那么您可以使用 json 或某种 xml 表示法来保持对象结构和字符串(或varchar)作为数据库类型。然后,当您从数据库中检索它时,您必须解析它以构建您的请求对象

希望这可以帮到你