[EP-tech] Search results sorting by compound field elements
Adam Field
Adam.Field at jisc.ac.uk
Thu Apr 21 10:45:17 BST 2016
You can define a function that returns an ordervalue on any metadata field. It'll look like this:
....
{
name => 'foo',
type => 'name',
multiple => 0,
make_value_orderkey => 'my_order_function'
}
...
$c->{my_order_function} = sub
{
my ($field, $value, $session, $langid, $dataset) = @_;
$familyname = $value->{family};
return md5($family);
}
Note that this is hazy, from memory and just typed straight into the email. Also, don't forget to regenerate the order values (I believe it's an epadmin command).
[Jisc]<http://www.jisc.ac.uk/>
Adam Field
SHERPA services analyst developer
From: <eprints-tech-bounces at ecs.soton.ac.uk<mailto:eprints-tech-bounces at ecs.soton.ac.uk>> on behalf of "Alan.Stiles" <alan.stiles at open.ac.uk<mailto:alan.stiles at open.ac.uk>>
Reply-To: "eprints-tech at ecs.soton.ac.uk<mailto:eprints-tech at ecs.soton.ac.uk>" <eprints-tech at ecs.soton.ac.uk<mailto:eprints-tech at ecs.soton.ac.uk>>
Date: Wednesday, 20 April 2016 16:01
To: "eprints-tech at ecs.soton.ac.uk<mailto:eprints-tech at ecs.soton.ac.uk>" <eprints-tech at ecs.soton.ac.uk<mailto:eprints-tech at ecs.soton.ac.uk>>
Subject: Re: [EP-tech] Search results sorting by compound field elements
Half-answering my own question:
my %options = ("custom_order" => "name");
my $list = $ds->search(%options);
actually does what I want, but doesn’t resolve the larger question of sorting by sub-fields – e.g. if I wanted to sort the list by given name rather than family name…
From: eprints-tech-bounces at ecs.soton.ac.uk<mailto:eprints-tech-bounces at ecs.soton.ac.uk> [mailto:eprints-tech-bounces at ecs.soton.ac.uk] On Behalf Of Alan.Stiles
Sent: 20 April 2016 15:28
To: eprints-tech at ecs.soton.ac.uk<mailto:eprints-tech at ecs.soton.ac.uk>
Subject: [EP-tech] Search results sorting by compound field elements
Hi all,
Anyone got a clue how to format the ‘custom_order’ parameter of a dataset search query to sort by sub-fields of a compound field?
i.e. – running a search over the ‘user’ dataset and I want to sort the results by name_family then name_given of the compound ‘name’ field.
Currently running (based on the search method from http://wiki.eprints.org/w/API:EPrints/DataSet#Object_Methods ):
$list = $ds->search( {“custom_order” => “name_given/name_family” };
But it doesn’t seem to be sorting the list at all
Thanks,
Alan
-- The Open University is incorporated by Royal Charter (RC 000391), an exempt charity in England & Wales and a charity registered in Scotland (SC 038302). The Open University is authorised and regulated by the Financial Conduct Authority.
Jisc is a registered charity (number 1149740) and a company limited by guarantee which is registered in England under Company No. 5747339, VAT No. GB 197 0632 86. Jisc’s registered office is: One Castlepark, Tower Hill, Bristol, BS2 0JA. T 0203 697 5800.
Jisc Services Limited is a wholly owned Jisc subsidiary and a company limited by guarantee which is registered in England under company number 2881024, VAT number GB 197 0632 86. The registered office is: One Castle Park, Tower Hill, Bristol BS2 0JA. T 0203 697 5800.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ecs.soton.ac.uk/pipermail/eprints-tech/attachments/20160421/c6813085/attachment.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 6B9928AE-9C97-4E75-8330-7E24168F02D7[20].png
Type: image/png
Size: 1264 bytes
Desc: 6B9928AE-9C97-4E75-8330-7E24168F02D7[20].png
Url : http://mailman.ecs.soton.ac.uk/pipermail/eprints-tech/attachments/20160421/c6813085/attachment.png
More information about the Eprints-tech
mailing list