java复杂搜索

标签 java database entity-relationship data-modeling

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

通过多组标准搜索汽车零件。

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

  • 模型DMake C找到Brand Bpart A第 x 年

  • 找出 Brand BMake CModel D 有哪些parts x 年

  • x 年Model D 中一次搜索 多个项目Vehicle C。例如,如果发动机损坏,我想快速查明供应中是否有零件(如活塞、气缸、垫圈等)。此搜索的结果是带有品牌和价格的零件列表。

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

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

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

最佳答案

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

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

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

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

Faceted search in Solr

Filters vs. Facets: Definitions

关于java复杂搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34832120/

相关文章:

java - 为什么下面的代码不起作用,除非数组是 Integer[],而不是 int[]

java - Marshall/Unmarshall 嵌套映射与 JaxB

php - 运行 "endless"进程监控 MySQL 的最佳方法?

php - 如何查询数据库中的 IP - 错误

mysql - 开源 - EER 建模工具

Hibernate 映射一对多,奇怪的例子

java - Wicket 搞乱了 Javascript 字符串的编码

java - 对对象列表进行排序和过滤

mysql - 多(少)对多(实际上太多)关系的数据库设计

mysql - ER图——避免一对一关系