0

我想查询与给定实体(相同类型)相似的实体。相似度(在最简单的情况下)定义为成员集合中相同项目的数量。

JPQL/HQL 查询会是什么样子?

我尝试了什么:

       SELECT wuSimilar, COUNT(*) AS score FROM WorkUnit wuBase 
           LEFT JOIN wuBase.tags AS wubTags
           LEFT JOIN WorkUnit wuSimilar ON wubTags IN wuSimilar.tags
           WHERE wuBase = :base
           GROUP BY wuSimilar
           ORDER BY score DESC

这基本上是搜索,所以我可以使用 Hibernate Search,但不确定它是否不是矫枉过正。或者,我对 ElasticSearch 之类的东西持开放态度,在这种情况下,问题是,只为这种情况引入它是否值得?我可能不会在这个项目中进行其他搜索。

4

1 回答 1

0

我非常接近,我只是过于依赖我的 SQL 知识。JPQL 仅JOIN用于声明的实体关系。

选择由表达式定义的列表时WHERE,必须是逗号加入。

       SELECT wuSimilar, COUNT(*) AS score FROM WorkUnit wuBase 
           LEFT JOIN wuBase.tags AS wubTags
           , WorkUnit wuSimilar
           WHERE wuBase = :base AND wubTags IN (wuSimilar.tags)
           GROUP BY wuSimilar
           ORDER BY score DESC

好像可以,去试试。

于 2013-02-19T08:34:40.767 回答