From 50b210ec5c0c14ed076850062ba2c5999a4f46c3 Mon Sep 17 00:00:00 2001 From: Martin Fenner Date: Sat, 15 Feb 2020 13:39:15 +0100 Subject: [PATCH] allow filtering of dois by citations, views or downloads. #390 --- app/controllers/dois_controller.rb | 3 +++ app/models/doi.rb | 3 +++ 2 files changed, 6 insertions(+) diff --git a/app/controllers/dois_controller.rb b/app/controllers/dois_controller.rb index 395a88c72..010451041 100644 --- a/app/controllers/dois_controller.rb +++ b/app/controllers/dois_controller.rb @@ -68,6 +68,9 @@ def index resource_type_id: params[:resource_type_id], schema_version: params[:schema_version], subject: params[:subject], + has_citations: params[:has_citations], + has_views: params[:has_views], + has_downloads: params[:has_downloads], link_check_status: params[:link_check_status], link_check_has_schema_org: params[:link_check_has_schema_org], link_check_body_has_pid: params[:link_check_body_has_pid], diff --git a/app/models/doi.rb b/app/models/doi.rb index dfcd8c206..d8e4d35af 100644 --- a/app/models/doi.rb +++ b/app/models/doi.rb @@ -703,6 +703,9 @@ def self.query(query, options={}) must << { term: { schema_version: "http://datacite.org/schema/kernel-#{options[:schema_version]}" }} if options[:schema_version].present? must << { terms: { "subjects.subject": options[:subject].split(",") }} if options[:subject].present? must << { term: { source: options[:source] }} if options[:source].present? + must << { term: { citation_count: { "gte": 1 }} if options[:has_citations].present? + must << { term: { view_count: { "gte": 1 }} if options[:has_views].present? + must << { term: { download_count: { "gte": 1 }} if options[:has_downloads].present? must << { term: { "landing_page.status": options[:link_check_status] }} if options[:link_check_status].present? must << { exists: { field: "landing_page.checked" }} if options[:link_checked].present? must << { term: { "landing_page.hasSchemaOrg": options[:link_check_has_schema_org] }} if options[:link_check_has_schema_org].present?