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).

Signed-off-by: Brendan A Gallagher <brendan@bywatersolutions.com>
This commit is contained in:
Zeno Tajoli 2015-06-04 17:27:10 +02:00 committed by Brendan A Gallagher
parent 07f950082c
commit cc878aee77
3 changed files with 29 additions and 2 deletions

View File

@ -389,7 +389,6 @@
<target_index>Title-cover:s</target_index>
<target_index>Title:w</target_index>
<target_index>Title:p</target_index>
<target_index>Title:s</target_index>
</index_subfields>
<!--record.abs line 114: melm 245$c Author,Author-in-order:w,Author-in-order:p,Author-in-order:s-->
<index_subfields tag="245" subfields="c">

View File

@ -17,6 +17,7 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
<xslo:template match="text()" mode="index_heading_conditional"/>
<xslo:template match="text()" mode="index_match_heading"/>
<xslo:template match="text()" mode="index_subject_thesaurus"/>
<xslo:template match="text()" mode="index_sort_tit"/>
<xslo:template match="/">
<xslo:if test="marc:collection">
<collection>
@ -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:leader">
@ -318,7 +320,7 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
<xslo:template mode="index_subfields" match="marc:datafield[@tag='245']">
<xslo:for-each select="marc:subfield">
<xslo:if test="contains('a', @code)">
<z:index name="Title-cover:w Title-cover:p Title-cover:s Title:w Title:p Title:s">
<z:index name="Title-cover:w Title-cover:p Title-cover:s Title:w Title:p">
<xslo:value-of select="."/>
</z:index>
</xslo:if>
@ -2464,6 +2466,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>
<xslo:template name="chopPunctuation">
<xslo:param name="chopString"/>
<xslo:variable name="length" select="string-length($chopString)"/>

View File

@ -39,6 +39,7 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
<xslo:template match="text()" mode="index_heading_conditional"/>
<xslo:template match="text()" mode="index_match_heading"/>
<xslo:template match="text()" mode="index_subject_thesaurus"/>
<xslo:template match="text()" mode="index_sort_tit"/>
<xslo:template match="/">
<xslo:if test="marc:collection">
<collection>
@ -65,6 +66,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>
@ -82,6 +84,17 @@ 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>
<xslo:template name="chopPunctuation">
<xslo:param name="chopString"/>
<xslo:variable name="length" select="string-length($chopString)"/>