diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OrganizationSimpleView.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OrganizationSimpleView.java index 3c58f49e..ddc95fbc 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OrganizationSimpleView.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OrganizationSimpleView.java @@ -62,9 +62,6 @@ public class OrganizationSimpleView implements Serializable, Comparable findByTypeAndStatusForUser(String type, String status, String name, Pageable pageable); // SEARCH FOR VALID DUPLICATE CANDIDATES - @Query(value = "select o.* from organizations_simple_view o left outer join org_index_search idx on (idx.id = o.id) where idx.txt @@ plainto_tsquery(:text) and o.candidate_dup order by o.name", nativeQuery = true) + @Query(value = "SELECT\n" + + " org.id,\n" + + " org.name,\n" + + " org.type,\n" + + " org.city,\n" + + " org.country,\n" + + " org.status,\n" + + " array_remove(array_agg(DISTINCT a.acronym), NULL) AS acronyms,\n" + + " array_remove(array_agg(DISTINCT u.url), NULL) AS urls,\n" + + " NULL AS n_similar_dups,\n" + + " NULL AS n_suggested_dups,\n" + + " NULL AS n_different_dups\n" + + "FROM org_index_search idx\n" + + " JOIN organizations org ON (idx.id = org.id) \n" + + " LEFT OUTER JOIN acronyms a ON (org.id = a.id)\n" + + " LEFT OUTER JOIN urls u ON (org.id = u.id)\n" + + " LEFT OUTER JOIN oa_duplicates d2 ON (org.id = d2.oa_original_id)\n" + + "WHERE org.status = 'raw' AND idx.txt @@ plainto_tsquery(:text)\n" + + "GROUP BY org.id, org.name, org.type, org.city, org.country, org.status\n" + + "HAVING not('is_similar' = ANY(array_agg(d2.reltype)))\n" + + "ORDER BY org.name", nativeQuery = true) Page searchCandidateDuplicates(@Param("text") String text, Pageable pageable); // SEARCH FOR VALID DUPLICATE CANDIDATES FOR USER - @Query(value = "select o.* from organizations_simple_view o left outer join org_index_search idx on (idx.id = o.id) left outer join user_countries uc on (uc.country = o.country) where idx.txt @@ plainto_tsquery(:text) and uc.email = :email and o.candidate_dup order by o.name", nativeQuery = true) + @Query(value = "SELECT\n" + + " org.id,\n" + + " org.name,\n" + + " org.type,\n" + + " org.city,\n" + + " org.country,\n" + + " org.status,\n" + + " array_remove(array_agg(DISTINCT a.acronym), NULL) AS acronyms,\n" + + " array_remove(array_agg(DISTINCT u.url), NULL) AS urls,\n" + + " NULL AS n_similar_dups,\n" + + " NULL AS n_suggested_dups,\n" + + " NULL AS n_different_dups\n" + + "FROM org_index_search idx\n" + + " JOIN organizations org ON (idx.id = org.id) \n" + + " LEFT OUTER JOIN acronyms a ON (org.id = a.id)\n" + + " LEFT OUTER JOIN urls u ON (org.id = u.id)\n" + + " LEFT OUTER JOIN oa_duplicates d2 ON (org.id = d2.oa_original_id)\n" + + " LEFT OUTER JOIN user_countries uc ON (uc.country = org.country)\n" + + "WHERE org.status = 'raw' AND uc.email = :email AND idx.txt @@ plainto_tsquery(:text)\n" + + "GROUP BY org.id, org.name, org.type, org.city, org.country, org.status\n" + + "HAVING not('is_similar' = ANY(array_agg(d2.reltype)))\n" + + "ORDER BY org.name", nativeQuery = true) Page searchCandidateDuplicatesForUser(@Param("text") String text, @Param("email") String email, Pageable pageable); } diff --git a/apps/dnet-orgs-database-application/src/main/resources/sql/schema.sql b/apps/dnet-orgs-database-application/src/main/resources/sql/schema.sql index f6e14a25..cd0b469a 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/sql/schema.sql +++ b/apps/dnet-orgs-database-application/src/main/resources/sql/schema.sql @@ -562,14 +562,12 @@ CREATE VIEW organizations_simple_view AS SELECT array_remove(array_agg(DISTINCT u.url), NULL) AS urls, count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'is_similar' ) AS n_similar_dups, count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'suggested' ) AS n_suggested_dups, - count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'is_different') AS n_different_dups, - (org.status = 'raw' AND not('is_similar' = ANY(array_agg(d2.reltype)))) AS candidate_dup + count(DISTINCT d1.oa_original_id) FILTER (WHERE d1.reltype = 'is_different') AS n_different_dups FROM organizations org LEFT OUTER JOIN acronyms a ON (org.id = a.id) LEFT OUTER JOIN urls u ON (org.id = u.id) LEFT OUTER JOIN oa_duplicates d1 ON (org.id = d1.local_id) - LEFT OUTER JOIN oa_duplicates d2 ON (org.id = d2.oa_original_id) GROUP BY org.id, org.name,