我有一个班级叫 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.
我该怎么做?
暂无答案!
目前还没有任何答案,快来回答吧!