1
0
mirror of https://github.com/ilri/dspace-statistics-api.git synced 2024-11-22 14:25:01 +01:00

app.py: Fix Solr queries for item views

According to dspace-api's Constants.java, items are type 2 and they
use a unique ID field of `id` instead of `owningItem`. There is no
need to check the bundleName for item types.

Also, I decided to use the main Solr query for item IDs because the
filter query parameter (fq) stores results in the filterCache and
can be quite expensive with cores storing tens of millions of docu-
ments (we currently have 149 million docs!). It makes sense to use
the filter query parameter to reduce the result set returned by the
main Solr query.
This commit is contained in:
Alan Orth 2018-09-20 17:34:55 +03:00
parent ed9d25294e
commit a263996582
Signed by: alanorth
GPG Key ID: 0FB860CC9C45B1B9

8
app.py
View File

@ -18,16 +18,16 @@ class ItemResource:
# Get views # Get views
res = solr.query(SOLR_CORE, { res = solr.query(SOLR_CORE, {
'q':'type:0', 'q':'type:2 AND id:{0}'.format(item_id),
'fq':'owningItem:{0} AND isBot:false AND statistics_type:view AND -bundleName:ORIGINAL'.format(item_id) 'fq':'isBot:false AND statistics_type:view'
}, rows=0) }, rows=0)
views = res.get_num_found() views = res.get_num_found()
# Get downloads # Get downloads
res = solr.query(SOLR_CORE, { res = solr.query(SOLR_CORE, {
'q':'type:0', 'q':'type:0 AND owningItem:{0}'.format(item_id),
'fq':'owningItem:{0} AND isBot:false AND statistics_type:view AND bundleName:ORIGINAL'.format(item_id) 'fq':'isBot:false AND statistics_type:view AND bundleName:ORIGINAL'
}, rows=0) }, rows=0)
downloads = res.get_num_found() downloads = res.get_num_found()