SpringJPA查询,用于获取与给定列表相似的相似列表

fnatzsnv  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(184)

我有一个班级叫 Product . 它还与 product 数据库表。数据库服务器为postgresql。我使用的是spring boot和hibernate。

public class Product{
    @ToString.Exclude
    @ElementCollection
    @Nullable
    private List<String> labels;
}

这个 Product 班级有 labels 字段,该字段表示 product 照片。例如,

List<String> labels = ["apple", "table", "phone"]

我的主要目的是编写一个sql查询,以获取所有具有“相似标签”的产品。
“相似标签”对我来说是什么?例如,让 labels1 表示的标签 product1 让我们 labels2 表示的标签 product2 .

List<String> labels1 = ["apple", "table", "phone"]
List<String> labels2 = ["apple"]

只有一项是“ apple" 这在两个列表中是相同的。所以呢 sameItemCounter 等于 1 .
两个列表中的完全不同项列表等于,

distinctItemList = ["apple","table","phone"]

所以, distinctItemCounter 等于 3 .
如果 100*sameItemCounter/distincItemCounter 如果大于30,则两个标签列表为“相似标签”。
所以在这种情况下, 100*sameItemCounter/distincItemCounter 等于 33,3 它比 30 ,那么我们可以说 labels1 以及 labels2 是“相似的标签”。所以,相对而言,我们可以说 product1 以及 product2 是“同类产品”。
虽然我可以通过在数据库中获取所有产品而不是在springboot(后端)中生成所有进程来实现这一点,但我希望通过数据库查询生成所有这些进程。
我想要一个类似于这个表格的答案:

public static final String GET_ALL_SIMILAR_PRODUCTS = "query??";

@Query(value = FIND_PROJECTS, nativeQuery = true)
public List<Product> getAllSimilarProducts(Product p); // need to return all "similar products" of p.

我该怎么做?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题