【问题标题】:java complex searchjava复杂搜索
【发布时间】:2016-04-22 06:57:00
【问题描述】:

出于以下目的,我正在尝试使用 Spring Boot 和 REST 架构构建一个基于 Java 的 Web 应用程序:

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

我尝试在不同的场景中解释它:

  • 找到part ABrand BMake CModel Dyear x

  • 找出Brand BMake CModel DYear x 的哪些parts 可用。

  • multiple items at once 中搜索 Vehicle CModel DYear x。例如,如果发动机损坏了,我想快速查明是否有零件(如活塞、气缸、垫圈等)在供应中。此搜索的结果是包含其品牌和价格的零件列表。

此时我主要关心以下两个问题:

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

所有 REST 端点都将返回 Json 对象。 我将在前端使用 Angular 和 Bootstrap

【问题讨论】:

    标签: java database entity-relationship data-modeling


    【解决方案1】:

    这个场景不是典型的“多面搜索”吗?我认为任何旨在实现分面搜索的解决方案都应该可以正常工作。例如 Solr 或 Elasticsearch。

    对于最终用户而言,“多面搜索”的优势在于可以优化搜索。用户可以从广泛搜索开始,系统将根据当前搜索结果提供细化过滤条件。

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

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

    Faceted search in Solr

    Filters vs. Facets: Definitions

    【讨论】:

      【解决方案2】:

      我会将重点放在简洁而不是有效地建模上 - 除非您已经知道您将拥有大量数据。如果以后需要,将其结构清晰将易于优化。

      规范化您的数据 - 将有大量关于如何做到这一点的信息。汽车行业正变得更加整合,因此现在不同车型甚至不同品牌共享许多零件。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-19
        • 2012-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多