<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
Hi Ken,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
I'm not very familiar with title sorting. That said, it looks to me like the code in misc_util.tt2 is only used for sorting the user's circs, holds, and circ history in My Account. Search results appear to be sorted as part of the actual search query - that
 is, selecting "Title: A to Z" as your sort option adds a "sort(titlesort)" parameter to your search query and then re-runs the search. The easiest option would probably be to let the underlying Evergreen search sort the results for you in this way.<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted1 ContentPasted2">
I believe the titlesort parameter ends up sorting on the value in the metabib.record_sorter table for each record in your results. I'm not sure exactly how metabib.record_sorter values are generated when records are ingested (there's some deep magic involving
 record attributes); at a minimum, it looks like it takes MARC non-filing characters into account and also strips punctuation.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted1 ContentPasted2">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0 ContentPasted1 ContentPasted2">
It seems to me that there are a few cataloguing errors in your examples. There should be no space after the apostrophe in "L'événement" and the non-filing indicator should be "2". For the Sue Grafton books, I think the non-filing indicator should be "1" since
 the initial character (") is non-filing. But you should definitely verify that stuff with an actual cataloguer.
<span id="🙂">🙂</span><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
Hopefully some of the above is useful and at least vaguely accurate!</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof ContentPasted0">
Jeff<br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Evergreen-dev <evergreen-dev-bounces@list.evergreen-ils.org> on behalf of Ken Cox via Evergreen-dev <evergreen-dev@list.evergreen-ils.org><br>
<b>Sent:</b> Saturday, January 28, 2023 7:07 PM<br>
<b>To:</b> evergreen-dev@list.evergreen-ils.org <evergreen-dev@list.evergreen-ils.org><br>
<b>Subject:</b> [Evergreen-dev] Struggling with title sorting</font>
<div> </div>
</div>
<div>
<div dir="ltr">I am struggling to sort lists by title in the mobile app.  Can somebody point me to the code where it happens, or explain how it's supposed to happen?
<div><br>
</div>
<div>I found code in <a href="https://git.evergreen-ils.org/?p=Evergreen.git;a=blob;f=Open-ILS/src/templates/opac/parts/misc_util.tt2;h=283bcb098c37f58337cffc5ec4a60c7403e154cd;hb=HEAD#l275">
misc_utils.tt2</a>, and read up on MARC 245 ind2 non-filing characters, hooray!  I implemented the logic and it doesn't match the OPAC, boo!</div>
<div><br>
</div>
<div><b>Is this the right code in <a href="https://git.evergreen-ils.org/?p=Evergreen.git;a=blob;f=Open-ILS/src/templates/opac/parts/misc_util.tt2;h=283bcb098c37f58337cffc5ec4a60c7403e154cd;hb=HEAD#l275">misc_utils.tt2</a> ?</b></div>
<div><br>
</div>
<div>
<blockquote style="margin:0 0 0 40px; border:none; padding:0px">
<div> 275         # If the title has a "non-filing chaaracters" <br>
 276         # (to logically remove leading "The " for example)<br>
 277         # chop the title. Otherwise, chop until the first alphanumeric.<br>
 278         # BTW: Template Toolkit folds 1-element arrays to scalars!<br>
 279         title_node = xml.findnodes('//*[@tag="245"]');<br>
 280 <br>
 281         args.nonfiling_characters = title_node.findvalue('@ind2');<br>
 282       <br>
 283         IF (args.nonfiling_characters > 0);<br>
 284              args.sort_title = args.sort_title.substr(args.nonfiling_characters);
<br>
 285         ELSE;<br>
 286              args.sort_title = args.sort_title.replace('^[^A-Z0-9]*','');<br>
 287         END;<br>
</div>
</blockquote>
</div>
<div><br>
</div>
<div><b>small example</b></div>
<div><br>
</div>
<div><a href="https://catalog.cwmars.org/eg/opac/results?query=&qtype=keyword&fi%3Asearch_format=&locg=1&detail_record_view=0&bookbag=1952592&sort=titlesort&depth=0">My public list</a> in the OPAC sorted by Title looks like this:</div>
<div>
<ol>
<li>"E" is for evidence</li><li>L'événement = Happening</li><li>"G" is for gumshoe<br>
</li></ol>
<div>That looks right.  Logging from the app show why this sort is wrong:</div>
<div><br>
</div>
</div>
<blockquote style="margin:0 0 0 40px; border:none; padding:0px">
<div><font face="monospace">item 4692942 has 2 non-filing chars: "L' événement = : Happening" -> " ÉVÉNEMENT = : HAPPENING"<br>
item 3152814 has 0 non-filing chars: ""E" is for evidence" -> "E" IS FOR EVIDENCE"<br>
item 3176781 has 0 non-filing chars: ""G" is for gumshoe" -> "G" IS FOR GUMSHOE"</font><br>
<div><br>
</div>
</div>
</blockquote>
<div>
<div>The first item has a space after L' in <a href="https://catalog.cwmars.org/osrf-gateway-v1?service=open-ils.search&method=open-ils.search.biblio.record.mods_slim.retrieve&param=4692942&_ck=114&_sk=3-7-3">the mvr record</a>, and so skipping 2 chars sorts
 on the space.  Maybe this is an encoding issue in the OSRF gateway?<br>
</div>
<div><br>
</div>
<div>Thanks for listening!</div>
-- <br>
<div dir="ltr" class="x_gmail_signature" data-smartmail="gmail_signature">Ken</div>
</div>
</div>
This message originated from outside the M365 organisation. Please be careful with links, and don't trust messages you don't recognise.
</div>
</body>
</html>