Bug 14332

Summary: Skip title articles on Opac using ind2 of tag 245 (MARC21 only)
Product: Koha Reporter: Zeno Tajoli <ztajoli>
Component: SearchingAssignee: Zeno Tajoli <ztajoli>
Status: CLOSED FIXED QA Contact: Testopia <testopia>
Severity: enhancement    
Priority: P5 - low CC: brendan, f.demians, katrin.fischer, marjorie.barry-vila, tomascohen
Version: Main   
Hardware: All   
OS: All   
Change sponsored?: --- Patch complexity: Medium patch
Documentation contact: Documentation submission:
Text to go in the release notes:
Version(s) released in:
Bug Depends on:    
Bug Blocks: 18540    
Attachments: skip article (only marc21)
One MARC21 biblio record to test the patch
Skip articles in MARC21 using indicator n.2 of field 245
Skip articles in MARC21 using indicator n.2 of field 245
Bug 14332: Skip articles in MARC21 using indicator n.2 of field 245

Description Zeno Tajoli 2015-06-04 15:11:54 UTC
With specific setup of Zebra is possible to skip articles of titles only on sorting.
In MARC21 we can use indicator n. 2 of field 245.

There suggestion from indexdata here:
http://www.indexdata.com/zebra/doc/record-model-domxml-conf.html
Comment 1 Zeno Tajoli 2015-06-04 15:43:01 UTC Comment hidden (obsolete)
Comment 2 Zeno Tajoli 2015-06-04 15:43:36 UTC
My proposal to fix the problem
Comment 3 Frédéric Demians 2015-11-11 14:53:12 UTC
Created attachment 44768 [details]
One MARC21 biblio record to test the patch
Comment 4 Frédéric Demians 2015-11-11 14:59:35 UTC Comment hidden (obsolete)
Comment 5 Jesse Weaver 2016-01-06 00:21:49 UTC Comment hidden (obsolete)
Comment 6 Jesse Weaver 2016-01-06 00:22:38 UTC
Created attachment 46288 [details] [review]
Bug 14332: Skip articles in MARC21 using indicator n.2 of field 245

Only in MARC21 is possible to use ind2 of tag 245 to skip articles.
This patch is based on inserting a special template in
koha-indexdefs-to-zebra.xsl With this patch you must not insert index
Title:s in biblio-koha-indexdefs.xml, it is defined in
koha-indexdefs-to-zebra.xsl.  It is not the best setup, but I find very
difficult  to use  biblio-koha-indexdefs.xml.

To test it in a english MARC21 setup:

Insert same records with titles and correct values in ind2 of 245.
If you have articles not in the skiping list of sort-string-utf.chr (The|the|a|A|an|An)
you can see that the sort by articles use also articles.

Insert the patch
Rebuilt indexes from scratch

Now all articles of titles are skipped

TO TEST WITHOUT INDEXING:

1. Go to etc/zebradb/marc_defs/marc21/biblios directory.

2. Put the sample MARCXML file in this directory.

3. Transform the file into Zebra indexes:
   xsltproc biblio-zebra-indexdefs.xsl record.xml
   Observe that the Title:s index contains:
   01 Business and Technologies

4. Apply the patch.

5. Repeat:
   xsltproc biblio-zebra-indexdefs.xsl record.xml
   Observe that the Title:s index contains:
   Business and Technologies

Signed-off-by: Frederic Demians <f.demians@tamil.fr>

Signed-off-by: Jesse Weaver <jweaver@bywatersolutions.com>
Verified working using yaz-client (as in
http://wiki.koha-community.org/wiki/Understanding_Zebra_indexing#Examine_Zebra_index,
though note that the `elem zebra::index` seems to be unneeded).

(Updated commit message to include bug number.)
Comment 7 Brendan Gallagher 2016-01-27 06:18:15 UTC
Pushed to Master - Should be in the May 2016 release.  Thanks!
Comment 8 Tomás Cohen Arazi 2016-12-02 20:13:34 UTC
This implementation is causing some troubles because the koha-indexdefs-to-zebra.xsl is by no means MARC21-only or even biblio-only.

To reproduce:
- On current master, run:
  $ xsltproc etc/zebradb/xsl/koha-indexdefs-to-zebra.xsl etc/zebradb/marc_defs/unimarc/biblios/biblio-koha-indexdefs.xml > etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl
- Run:
  $ git diff
=> FAIL: The following is added to etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl, thus UNIMARC field 245 is being sent to the Title index

@@ -42,6 +43,7 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
       <xslo:apply-templates mode="index_match_heading"/>
       <xslo:apply-templates mode="index_subject_thesaurus"/>
       <xslo:apply-templates mode="index_all"/>
+      <xslo:apply-templates mode="index_sort_tit"/>
     </z:record>
   </xslo:template>
   <xslo:template match="marc:controlfield[@tag='001']">
@@ -2681,6 +2683,19 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
       <xslo:value-of select="."/>
     </z:index>
   </xslo:template>
+  <xslo:template mode="index_sort_tit" match="marc:datafield[@tag='245']">
+    <xslo:variable name="chop">
+      <xslo:choose>
+        <xslo:when test="not(number(@ind2))">0</xslo:when>
+        <xslo:otherwise>
+          <xslo:value-of select="number(@ind2)"/>
+        </xslo:otherwise>
+      </xslo:choose>
+    </xslo:variable>
+    <z:index name="Title:s">
+      <xslo:value-of select="substring(marc:subfield[@code='a'], $chop+1)"/>
+    </z:index>
+  </xslo:template>
Comment 9 Katrin Fischer 2019-09-22 20:52:32 UTC
(In reply to Tomás Cohen Arazi from comment #8)
> This implementation is causing some troubles because the
> koha-indexdefs-to-zebra.xsl is by no means MARC21-only or even biblio-only.
> 
> To reproduce:
> - On current master, run:
>   $ xsltproc etc/zebradb/xsl/koha-indexdefs-to-zebra.xsl
> etc/zebradb/marc_defs/unimarc/biblios/biblio-koha-indexdefs.xml >
> etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl
> - Run:
>   $ git diff
> => FAIL: The following is added to
> etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl, thus
> UNIMARC field 245 is being sent to the Title index
> 
> @@ -42,6 +43,7 @@ definition file (probably something like
> {biblio,authority}-koha-indexdefs.xml)
>        <xslo:apply-templates mode="index_match_heading"/>
>        <xslo:apply-templates mode="index_subject_thesaurus"/>
>        <xslo:apply-templates mode="index_all"/>
> +      <xslo:apply-templates mode="index_sort_tit"/>
>      </z:record>
>    </xslo:template>
>    <xslo:template match="marc:controlfield[@tag='001']">
> @@ -2681,6 +2683,19 @@ definition file (probably something like
> {biblio,authority}-koha-indexdefs.xml)
>        <xslo:value-of select="."/>
>      </z:index>
>    </xslo:template>
> +  <xslo:template mode="index_sort_tit" match="marc:datafield[@tag='245']">
> +    <xslo:variable name="chop">
> +      <xslo:choose>
> +        <xslo:when test="not(number(@ind2))">0</xslo:when>
> +        <xslo:otherwise>
> +          <xslo:value-of select="number(@ind2)"/>
> +        </xslo:otherwise>
> +      </xslo:choose>
> +    </xslo:variable>
> +    <z:index name="Title:s">
> +      <xslo:value-of select="substring(marc:subfield[@code='a'], $chop+1)"/>
> +    </z:index>
> +  </xslo:template>

Should this be filed as a new bug? I think it has been missed here?