<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
Good Morning,
<div class=""><br class="">
</div>
<div class="">tnks for the good answers. They fits to what i observed in&nbsp;<span style="font-family: Menlo-Regular; background-color: rgb(255, 255, 255);" class="">eprint__rindex</span>. I will try it in the next time i have a service slot free&nbsp;</div>
<div class="">
<div class="">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div style="color: rgb(0, 0, 0); font-family: Menlo; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br class="">
Regards,</div>
<div style="color: rgb(0, 0, 0); font-family: Menlo; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br class="">
</div>
<div style="color: rgb(0, 0, 0); font-family: Menlo; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
Avi&nbsp;<br class="">
<br class="">
</div>
<div style="color: rgb(0, 0, 0); font-family: Menlo; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<br class="">
</div>
<br class="Apple-interchange-newline">
</div>
<br class="Apple-interchange-newline">
</div>
<div><br class="">
<blockquote type="cite" class="">
<div class="">Am 03.03.2018 um 19:49 schrieb David R Newman &lt;<a href="mailto:drn@ecs.soton.ac.uk" class="">drn@ecs.soton.ac.uk</a>&gt;:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class="">Hi Matthew,<br class="">
<br class="">
Thanks for the advice. &nbsp;That seems to work for the issue I observed. &nbsp;To <br class="">
give an example walkthrough for Avi, I did the following:<br class="">
<br class="">
1. Added the $dsn.= &quot;;mysql_enable_utf8=1&quot;; line just before the return <br class="">
line of the build_connection_string method in perl_lib/EPrints/Database.pm<br class="">
<br class="">
2. Changed $self-&gt;do(&quot;SET NAMES 'utf8'&quot;); to $self-&gt;do(&quot;SET NAMES <br class="">
'utf8mb4'&quot;); in connect method of perl_lib/EPrints/Database/mysql.pm<br class="">
<br class="">
3. Ran the following commands at the MySQL prompt. (I am not sure of the <br class="">
collate lines are needed but wanted to keep things consistent):<br class="">
<br class="">
ALTER TABLE eprint__rindex CONVERT TO CHARACTER SET utf8mb4;<br class="">
<br class="">
ALTER TABLE eprint__rindex modify column word varchar(128) not null <br class="">
collate 'utf8mb4_bin';<br class="">
<br class="">
ALTER TABLE eprint__rindex modify column field varchar(64) not null <br class="">
collate 'utf8mb4_bin';<br class="">
<br class="">
4. Ran my script to de-index the record. &nbsp;However, this should not be <br class="">
necessary but it was useful for me to confirm indexes are removed before <br class="">
being re-added.<br class="">
<br class="">
5. Ran epadmin reindex on the appropriate record.<br class="">
<br class="">
6. Queried the database to make sure words that failed to be indexed <br class="">
succeeded this time.<br class="">
<br class="">
7. Did an advanced search using the documents field with one of these <br class="">
newly-indexed terms that the database query found to confirm the EPrint <br class="">
is returned as a result.<br class="">
<br class="">
It is probably worth doing a complete reindex of all EPrint records <br class="">
using epadmin reindex. &nbsp;This will acheive two things, test that the <br class="">
original problem is resolved and make all EPrints searchable on the <br class="">
terms that were intended to be indexed.<br class="">
<br class="">
Regards<br class="">
<br class="">
David Newman<br class="">
<br class="">
<br class="">
On 03/03/2018 01:45, Matthew Kerwin wrote:<br class="">
<blockquote type="cite" class="">We've dealt with this over the years, too. &nbsp;Some pointers, which might<br class="">
be difficult depending on your situation:<br class="">
<br class="">
1. Make sure the relevant columns/tables/database uses a Unicode<br class="">
encoding (currently the 3.3 branch is set up for 'utf8', but I've<br class="">
migrated ours to 'utf8mb4') -- this involves both:<br class="">
<br class="">
&nbsp;&nbsp;&nbsp;2) making sure the EPrints code uses the right encoding parameters<br class="">
in all its database queries (not just EPrints::Database and<br class="">
EPrints::Database::mysql, but also any other library or package that<br class="">
handles its own database connections), and<br class="">
<br class="">
&nbsp;&nbsp;&nbsp;b) ensuring that any existing database tables are converted<br class="">
correctly (see:<br class="">
<a href="https://dev.mysql.com/doc/refman/5.7/en/alter-table.html#alter-table-character-set" class="">https://dev.mysql.com/doc/refman/5.7/en/alter-table.html#alter-table-character-set</a><br class="">
)<br class="">
<br class="">
2. Make sure the connection to the database uses a Unicode encoding;<br class="">
for example:<br class="">
<br class="">
&nbsp;&nbsp;&nbsp;* https://github.com/eprints/eprints/blob/3.3/perl_lib/EPrints/Database/mysql.pm#L242<br class="">
<br class="">
&nbsp;&nbsp;&nbsp;* https://github.com/eprints/eprints/blob/3.3/perl_lib/EPrints/Database.pm#L164<br class="">
<br class="">
&nbsp;&nbsp;&nbsp;* https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html#option_mysql_default-character-set<br class="">
<br class="">
3. Making sure EPrints/perl handles Unicode strings correctly and<br class="">
consistently. &nbsp;It's a bit of a pain, but we're working at it!<br class="">
<br class="">
Cheers<br class="">
<br class="">
<br class="">
On 3 March 2018 at 10:53, David R Newman &lt;drn@ecs.soton.ac.uk&gt; wrote:<br class="">
<blockquote type="cite" class="">Hi Avi,<br class="">
<br class="">
I have noted this issue happening quite a lot as well. &nbsp;I have tracked it<br class="">
down to an issue indexing PDF documents where the extracted word to be<br class="">
indexed contains non-ascii characters. &nbsp;If the whole word is non-ascii<br class="">
characters, basically the empty string gets indexed, if there is more than<br class="">
one word that is all non-ascii characters, then it fails with the error you<br class="">
see below, as it cannot index the empty string twice for the same EPrint and<br class="">
field (i.e. documents). &nbsp;This is because the eprint__rindex table has three<br class="">
fields that make up a primary key, field, word and eprintid. As the middle<br class="">
one is not set that is is why you see documents--91 rather than something<br class="">
like documents-word-91 in your error message.<br class="">
<br class="">
As far as I can tell, this just effects this one badly encoded word from<br class="">
getting indexed rather than preventing all indexing for the whole EPrint. &nbsp;I<br class="">
have tested this by writing a script to completely de-index an EPrint and<br class="">
then ran reindex, &nbsp;I could see the records disappeared from the<br class="">
eprint__rindex table and then reappear again after the reindex.<br class="">
<br class="">
I am going to see if I can get the encoding issue sorted out, as this is<br class="">
likely to be problematic for people who are indexing publications with<br class="">
non-Latin alphabets. &nbsp;However, this is never straightforward, based on past<br class="">
experience.<br class="">
<br class="">
Regards<br class="">
<br class="">
David Newman<br class="">
<br class="">
<br class="">
On 02/03/2018 10:53, Stenger, Avischai wrote:<br class="">
<br class="">
<br class="">
Hello 2 all,<br class="">
<br class="">
i have some eprints that do not get rindexed. If i execute, as an example:<br class="">
<br class="">
~/bin/epadmin reindex REPO eprint 91<br class="">
<br class="">
i get The error:<br class="">
<br class="">
DBD::mysql::st execute failed: Duplicate entry 'documents--91' for key<br class="">
'PRIMARY' at /usr/share/eprints/bin/../perl_lib/EPrints/Database.pm line<br class="">
1287.<br class="">
<br class="">
<br class="">
<br class="">
i noticed that if i replace the PDF-Document in this eprint &nbsp;i can indexed<br class="">
it without any Error-message.<br class="">
<br class="">
if i check the PDF with some open-pdf-checker it says the PDF ist okay.<br class="">
(https://www.pdf-online.com/osa/validate.aspx)<br class="">
<br class="">
<br class="">
tnks and have a good weekend<br class="">
<br class="">
<br class="">
Avi<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
<br class="">
*** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech<br class="">
*** Archive: http://www.eprints.org/tech.php/<br class="">
*** EPrints community wiki: http://wiki.eprints.org/<br class="">
*** EPrints developers Forum: http://forum.eprints.org/<br class="">
<br class="">
<br class="">
<br class="">
*** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech<br class="">
*** Archive: http://www.eprints.org/tech.php/<br class="">
*** EPrints community wiki: http://wiki.eprints.org/<br class="">
*** EPrints developers Forum: http://forum.eprints.org/<br class="">
<br class="">
</blockquote>
<br class="">
<br class="">
</blockquote>
<br class="">
*** Options: <a href="http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech" class="">
http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech</a><br class="">
*** Archive: <a href="http://www.eprints.org/tech.php/" class="">http://www.eprints.org/tech.php/</a><br class="">
*** EPrints community wiki: <a href="http://wiki.eprints.org/" class="">http://wiki.eprints.org/</a><br class="">
*** EPrints developers Forum: <a href="http://forum.eprints.org/" class="">http://forum.eprints.org/</a><br class="">
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>