[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[EP-tech] Search results sorting by compound field elements



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