java 复杂搜索

java complex search

我正在尝试使用 Spring 引导和 REST 架构构建一个基于 java 的 Web 应用程序,使用 Spring MVC 用于以下目的:

通过多组条件搜索汽车零件。

我尝试在不同的场景下进行解释:

目前我最关心的是以下两个问题:

  1. 我应该如何对数据建模以便高效地实现搜索场景?我的意思是 Java 中的实体和持久性系统之间的关系应该是什么样的?
  2. 我应该使用什么样的数据库? SQL 或否SQL?

所有 REST 端点都将 return Json 对象。 我将使用 Angular 和 Bootstrap 作为前端

这种情况不就是典型的"faceted search"吗?我认为任何旨在实现分面搜索的解决方案都应该可以正常工作。例如 Solr 或 Elasticsearch。

"faceted search" 对最终用户的好处是可以选择优化搜索。用户可以从广泛的搜索开始,系统将根据当前搜索结果提供细化过滤条件。

今天,所有主要 e-commerce 网站都有一种分面搜索,每个搜索引擎都支持这种类型的浏览。

在我看来,像 Solr 和 Elasticsearch 这样的引擎是更自然的解决方案,但即使像 Oracle 这样的标准 RDBMS 也支持分面搜索。

Faceted search in Solr

Filters vs. Facets: Definitions

我会把重点放在干净地而不是高效地建模上——除非您已经知道您将拥有大量数据。如果以后需要,将其结构清晰地进行优化将很容易。

标准化您的数据 - 将有大量关于如何执行此操作的信息。汽车行业正变得越来越整合,许多零件现在在不同车型甚至不同品牌之间共享。

可以使用像 hibernate 这样的 ORM 将您的实体映射到您的表。 Spring 在这方面提供了额外的支持,您可能会考虑使用 Spring MVC。