EPrints Technical Mailing List Archive
Message: #01372
< Previous (by date) | Next (by date) > | < Previous (in thread) | Next (in thread) > | Messages - Most Recent First | Threads - Most Recent First
[EP-tech] Re: Creating searches in EPrints?
- To: eprints-tech@ecs.soton.ac.uk
- Subject: [EP-tech] Re: Creating searches in EPrints?
- From: Ian Stuart <Ian.Stuart@ed.ac.uk>
- Date: Tue, 11 Dec 2012 08:55:58 +0000
On 10/12/12 17:07, Tim Brody wrote:
On Fri, 2012-12-07 at 12:14 +0000, Ian Stuart wrote:Is this documented anywhere? I'm not finding anything... If I have the following defined for an eprint dataObject: { 'name' => 'broker', 'type' => 'compound', 'multiple' => 1, 'fields' => [ { sub_name => 'orgid', 'type' => 'text' }, { sub_name => 'orgname', 'type' => 'text' }, { sub_name => 'repoid', 'type' => 'text' }, { sub_name => 'reponame', 'type' => 'text' }, { sub_name => 'sword', 'type' => 'boolean' }, { sub_name => 'sent', 'type' => 'time', }, { sub_name => 'return', 'type' => 'url' }, { sub_name => 'live', 'type' => 'time', }, { sub_name => 'target', 'type' => 'url' }, { sub_name => 'note', 'type' => 'text' }, { sub_name => 'archiver', 'type' => 'boolean' }, ], }, I should be able to create a search thus: my $dso = $session->get_repository->get_dataset("archive"); my $searchexp1 = EPrints::Search->new( satisfy_all => 1, session => $session, dataset => $dso, ); $searchexp1->add_field( $dso->get_field("broker_sword"), 'TRUE' ); $searchexp1->add_field( $dso->get_field("broker_sent"), '2000-' ); $searchexp1->add_field( $dso->get_field("broker_live"), '' ); my $results1 = $searchexp1->perform_search; As I understand it, this should list only those records where one or more of the broker elements has the sub_field "sword" set true, and the sub_field "sent" defined and after the year 2000, and the sub_field "live" is empty .... unfortunately, I'm getting records where sub_field "sword" is true, but none of the broker elements have a "sent" sub_field Is there anything out there?To help debug, print $searchexp1->get_conditions->describe; To see what you're getting. On more recent versions you can use '..' as the range selector, in case it's a problem with understanding '-' with just a year (or maybe "2000-01-01-" ?).
Yep - turns out to need$searchexp1->add_field( $dso->get_field("broker_sent"), '2000-01-01-3000-12-31');
So I'm now getting a described query of: AND( =($archive.eprint_status,"archive") ... eprint, =($archive.broker_sword,"TRUE") ... eprint_broker_sword, AndSubQuery( >=($archive.broker_sent,"2000-01-01") ... eprint_broker_sent, <=($archive.broker_sent,"3000-12-31") ... eprint_broker_sent ) ).... however it seems the "AndSubQuery" is not a proper AND, more a PLUS - this is a returned list of broker sub-fields.... and you'll note none of them have a 'sent' field between the dates in the query:
'broker' => [ { 'index' => 2, 'reponame' => 'Edinburgh DataShare', 'sword' => 'FALSE', 'eprintid' => 185, 'repoid' => '12065', 'orgname' => 'ed.ac.uk', 'orgid' => '16480', 'archiver' => 'FALSE' }, { 'index' => 3, 'reponame' => 'Edinburgh Research Archive', 'sword' => 'TRUE', 'eprintid' => 185, 'repoid' => '12066', 'orgname' => 'ed.ac.uk', 'orgid' => '16480', 'archiver' => 'FALSE' }, { 'index' => 4, 'reponame' => 'Informatics@Edinburgh - Reports Series', 'sword' => 'FALSE', 'eprintid' => 185, 'repoid' => '12287', 'orgname' => 'ed.ac.uk', 'orgid' => '16480', 'archiver' => 'FALSE' }, { 'index' => 1, 'reponame' => 'JorumOpen', 'sword' => 'FALSE', 'eprintid' => 185, 'repoid' => '13311', 'orgname' => 'EDINA', 'orgid' => '16300', 'archiver' => 'FALSE' } ], -- Ian Stuart. Developer: ORI, RJ-Broker, and OpenDepot.org Bibliographics and Multimedia Service Delivery team, EDINA, The University of Edinburgh. http://edina.ac.uk/ This email was sent via the University of Edinburgh. The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336.
- References:
- [EP-tech] Creating searches in EPrints?
- From: Ian Stuart <Ian.Stuart@ed.ac.uk>
- [EP-tech] Re: Creating searches in EPrints?
- From: Tim Brody <tdb2@ecs.soton.ac.uk>
- [EP-tech] Creating searches in EPrints?
- Prev by Date: [EP-tech] Re: Creating searches in EPrints?
- Next by Date: [EP-tech] Re: How to rename a file uploaded by a user automatically
- Previous by thread: [EP-tech] Re: Creating searches in EPrints?
- Next by thread: [EP-tech] Very odd screen coming up on EPrints 3.3.10. Help!?
- Index(es):