[EP-tech] OAI : need some explanations about custom sets and filters
martin.braendle at id.uzh.ch
martin.braendle at id.uzh.ch
Wed Jun 6 14:21:47 BST 2018
For sets that have a more complicated condition (e.g. all eprints that are
in the live archive and do have a PDF or Word document attached) we set a
field with a Yes/No value and then provide just a filter on this field.
Best regards,
Martin
--
Dr. Martin Brändle
Zentrale Informatik
Universität Zürich
Stampfenbachstr. 73
CH-8006 Zürich
Von: John Salter <J.Salter at leeds.ac.uk>
An: Laurent Cloarec <Laurent.Cloarec at ut-capitole.fr>
Kopie: "eprints-tech at ecs.soton.ac.uk" <eprints-tech at ecs.soton.ac.uk>
Datum: 06.06.2018 12:15
Betreff: Re: [EP-tech] OAI : need some explanations about custom sets
and filters
Gesendet von: eprints-tech-bounces at ecs.soton.ac.uk
Hi Laurent,
The code that was in my head is below - does that make more sense (I only
wrote it in an email - it might not be 100% right!)?
BUT:
*** I DON'T THINK THIS IS A GOOD IDEA ***
Setting the 'satisfy_all' on the search to 0 (an 'OR' join) would mean that
the restriction on the eprint_status field would be an OR - and therefore
records that matched another filter, but were in the inbox or review area
would also be returned - and this is *NOT* what you need!
You could get round this by performing two searches - one on the archive
dataset, and the other on the deletion dataset - and then combining both
before outputting data.
Cheers,
John
############ Config #############
$oai->{custom_sets} = [
{
spec => "test_set",
name => "test_set",
filters => [
{ meta_fields => [ "full_text_status" ], value => "public", },
],
satisfy_all => 0, #new option
},
];
############ cgi/oai2 (see lines flagged with '## addition ##')
#############
push @$filters, {
meta_fields => [qw( eprint_status )],
value => "archive deletion",
match => "EQ",
merge => "ANY",
};
# custom sets
my $satisfy_all = 1; ## addition ##
if( defined $args->{set} )
{
my $custom_sets = $repo->config( "oai", "custom_sets" );
my( $info ) = grep { $_->{spec} eq $args->{set} }
@{$custom_sets||[]};
if( defined $info )
{
my $_filters = $info->{filters};
$_filters = [$info] if !defined $_filters;
push @$filters, @$_filters;
delete $args->{set};
$satisfy_all = $info->{satisfy_all} if defined
$info->{satisfy_all}; ## addition ##
}
}
my $searchexp = $ds->prepare_search(
allow_blank => 1,
filters => [
@{$filters},
],
custom_order => "eprintid",
limit => ($PAGESIZE+1),
satisfy_all => $satisfy_all, ## addition ##
);
-----Original Message-----
From: Laurent Cloarec [mailto:Laurent.Cloarec at ut-capitole.fr]
Sent: 06 June 2018 10:02
To: John Salter <J.Salter at leeds.ac.uk>
Cc: eprints-tech at ecs.soton.ac.uk
Subject: [EP-tech] OAI : need some explanations about custom sets and
filters
http://mailman.ecs.soton.ac.uk/pipermail/eprints-tech/2018-May/007320.html
[EP-tech] OAI : need some explanations about custom sets and filters
Hi
If EPrints::DataSet::prepare_search calls EPrints::Search::new, I don't see
exactly how one could "define a key on the oai set config to switch
satisfy_all
between 1 and 0 as necessary" in such an overloading version of oai2
script...
Best regards
Laurent Cloarec
John Salter J.Salter at leeds.ac.uk
Tue May 29 19:39:04 BST 2018
>
> Hi Laurent,
>
> If I remember correctly, it's an 'AND' in the vanilla oai2 interface.
>
>
> From: [EPRINTS_ROOT]/cgi/oai2
>
>
> my $searchexp = $ds->prepare_search(
> allow_blank => 1,
> filters => [
> @{$filters},
> ],
> custom_order => "eprintid",
> limit => ($PAGESIZE+1) );
>
>
> EPrints::DataSet::prepare_search calls EPrints::Search::new - the default
setting for a search is 'satisfy_all' = 1.
>
>
> You could copy the cgi script above into:
>
> [EPRINTS_ROOT]/archives/[ARCHIVEID]/cgi/oai2
>
> and define a key on the oai set config to switch satisfy_all between 1
and 0 as necessary.
>
>
> I have not tried this. It's a possible solution for what you need - but
entirely untested!
>
> If it doesn't work, or you have other questions, let me know!
>
>
> Cheers,
>
> John
>
> PS You may also be interested in http://bazaar.eprints.org/411/ - which
flags anything that has a datestamp, but that is not currently live as
'deleted' in the OAI-PMH interface (which is more compliant with that
standard).
>
> The changes may have been merged into the core of EPrints - comparing the
cgi/oai2 files should show if this is the case.
>
> ________________________________
> From: eprints-tech-bounces at ecs.soton.ac.uk <eprints-tech-bounces at
ecs.soton.ac.uk> on behalf of Laurent Cloarec <Laurent.Cloarec at
ut-capitole.fr>
> Sent: 29 May 2018 14:47:52
> To: eprints-tech at ecs.soton.ac.uk
> Subject: [EP-tech] OAI : need some explanations about custom sets and
filters
>>
>> https://wiki.eprints.org/w/OAI
>>
>> Hi there
>>
>> As we do need to define an OAI custom set into our repository, I'd like
to know
>> if the different filters criteria work only with an implicit "AND"
operator
>> (unfortunately not "OR"), and if exists a negative operator (kind of
"!=>")...
>>
>> Regards
>> --
>> Laurent Cloarec
>> Service Commun de la Documentation - Service du Numérique Documentaire
>> Université Toulouse 1 Capitole
*** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech
*** Archive: http://www.eprints.org/tech.php/
*** EPrints community wiki: http://wiki.eprints.org/
*** EPrints developers Forum: http://forum.eprints.org/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ecs.soton.ac.uk/pipermail/eprints-tech/attachments/20180606/d6fd7f6e/attachment-0001.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: graycol.gif
Type: image/gif
Size: 105 bytes
Desc: not available
Url : http://mailman.ecs.soton.ac.uk/pipermail/eprints-tech/attachments/20180606/d6fd7f6e/attachment-0001.gif
More information about the Eprints-tech
mailing list