[EP-tech] Searching through multilang fields

George Mamalakis mamalos at eng.auth.gr
Thu Jul 2 13:57:16 BST 2015


Hi all,

First of all I started a new thread, since the objective of the question 
has strayed from its original form (nothing to do with finding selected 
language from configuration) and the new question is quite self contained.

Secondly, I did some research before asking for further help, and here 
are my findings (I am using the *title* field in these examples):

1) Each multilang eprints field generates three additional fields in 
every eprint__ordervalue_xx table of your database (where xx may stand 
for en, el, etc.), namely: ml_title_text, ml_title_lang, ml_title_text 
(all of them are of type longtext)
2) The peculiar thing is that all language texts are stored in the 
ml_title_text field of *every* eprint__ordervalues_xx table. What I mean 
is that each eprint__ordervalue_xx language table (eg. en, el) contains 
the exact same information.
3) When performing an API search to see how searching the ml_title field 
is performed using the following code (which just searches for the 
"title" keyword within our multilang ml_title field):

use EPrints;
my $ep = EPrints->new();
my $repo = $ep->repository( "testpamak1" );
my $ds = $repo->dataset("archive");
my $an_eprint = $repo->eprint( 23 );

$list = $ds->search(search_fields => [{
     meta_fields => [qw( ml_title )], value => "title",
   }]);


the generated SQL was:

SELECT `eprint`.`eprintid` FROM `eprint`, `eprint__rindex` AS 
`eprint__rindex` WHERE `eprint`.`eprintid`=`eprint__rindex`.`eprintid` 
AND (`eprint`.`eprint_status` = 'archive' AND 
`eprint__rindex`.`field`='ml_title_text' AND 
`eprint__rindex`.`word`='title') GROUP BY `eprint`.`eprintid`

Meaning that the real search was performed in the eprint__rindex table. 
This table has a 'field' column and a 'word' column, where the 'field' 
column in our case is 'ml_title' and the 'word' column equals to our 
search keyword, which is 'title'.

That said, it seems that the search process (at least as far as the API 
is concerned) will work just fine, if we somehow manage to use the 
multilang fields in our searches (eg. ml_title, ml_abstract, ml_creator, 
etc.).

Now, my questions are as follows:

- Where should I start in order to create a custom search form? Is there 
any documentation or should I try to understand how it works by reading 
eprint_search_advanced.pl?
- Is there another, maybe easier way to achieve searching within the 
multilang fields or their associated virtual fields?

Thanks all in advance,

George.

On 02/07/2015 02:17 μμ, Adam Field wrote:
> I don't believe virtual fields will get searched because they aren't 
> stored in the database.
>
> You should add the multilang field to the search form, but I'm 
> actually not sure how it will behave.
>
> --
> Adam Field
> Business Relationship Manager and Community Lead
> EPrints Services
>
>> On 2 Jul 2015, at 12:10, George Mamalakis <mamalos at eng.auth.gr 
>> <mailto:mamalos at eng.auth.gr>> wrote:
>>
>> Excellent observation skills!! :):)...and sorry for not having seen that.
>>
>> One more question. With this setup (for title and abstract with two 
>> fields each), will searches work as expected? Meaning that, based on 
>> the selected language, EPrints will search the (dynamically 
>> generated) appropriate language title field for example? Because I'm 
>> trying to test it, but I'm facing some difficulties using the 
>> extended search menu, and I'm not sure if this is the problem 
>> (putting the title ). Simple search works just fine, but I assume 
>> that simple search searches all fields?
>>
>> Thanks again!
>>
>> George.


-- 
George Mamalakis

IT and Security Officer,
Electrical and Computer Engineer (Aristotle Univ. of Thessaloniki),
PhD (Aristotle Univ. of Thessaloniki),
MSc (Imperial College of London)

School of Electrical and Computer Engineering
Aristotle University of Thessaloniki

phone number : +30 (2310) 994379


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ecs.soton.ac.uk/pipermail/eprints-tech/attachments/20150702/a31c328c/attachment-0001.html 


More information about the Eprints-tech mailing list