Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion Generalized getTitleSort function

Received: by 10.42.80.2 with SMTP id t2mr2800162ick.9.1347382197333;
        Tue, 11 Sep 2012 09:49:57 -0700 (PDT)
X-BeenThere: solrmarc-tech@googlegroups.com
Received: by 10.50.51.234 with SMTP id n10ls3892509igo.3.canary; Tue, 11 Sep
 2012 09:49:55 -0700 (PDT)
Received: by 10.42.73.129 with SMTP id s1mr8451555icj.21.1347382195760;
        Tue, 11 Sep 2012 09:49:55 -0700 (PDT)
Received: by 10.42.73.129 with SMTP id s1mr8451552icj.21.1347382195703;
        Tue, 11 Sep 2012 09:49:55 -0700 (PDT)
Return-Path: <olson....@gmail.com>
Received: from mail-ie0-f177.google.com (mail-ie0-f177.google.com [209.85.223.177])
        by gmr-mx.google.com with ESMTPS id vb5si785240igb.0.2012.09.11.09.49.55
        (version=TLSv1/SSLv3 cipher=OTHER);
        Tue, 11 Sep 2012 09:49:55 -0700 (PDT)
Received-SPF: pass (google.com: domain of olson....@gmail.com designates 209.85.223.177 as permitted sender) client-ip=209.85.223.177;
Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of olson....@gmail.com designates 209.85.223.177 as permitted sender) smtp.mail=olson....@gmail.com; dkim=pass header...@gmail.com
Received: by mail-ie0-f177.google.com with SMTP id e10so1507916iej.8
        for <solrmarc-tech@googlegroups.com>; Tue, 11 Sep 2012 09:49:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20120113;
        h=content-type:mime-version:subject:from:in-reply-to:date:cc
         :message-id:references:to:x-mailer;
        bh=xnagJD4uXQ1Cyj6jRg+yRSJoI3nuWDQ89UxPf7Jz0rs=;
        b=V12eG7BbFGC/mynu/KeFCc5BqseCUHlDO4OC1lCH6F8c45htzbIWfMBhsjq1855UVL
         XiJ0qV4spuLSPvhZLbyQx6jy/hipBnNyanQaKFP5Cgud/c8GfkIy1fM9kXeTInTmFeZ2
         Jogu1IyamQv366DYExPq0XyExVjxWGz/fUis6uZlteKgzHqQ5o/tyCShQdnmtUFMD0Dz
         SJph/Y8obvLIMiDyHmOjr/OSe8Teu0/UNaVSks9rx2DqPpDYtuIOJi7RMGNMJZH1qbR2
         ARcTD6OLIehJIiofSczZYfuvikyCQNHvLG4Hf+pUWrVJLcS7eJRhMfAYpuf/UOz5QeBC
         CFZg==
Received: by 10.50.195.132 with SMTP id ie4mr17729547igc.59.1347382195431;
        Tue, 11 Sep 2012 09:49:55 -0700 (PDT)
Return-Path: <olson....@gmail.com>
Received: from wireless-s1-no-150-30-98.uchicago.edu (bambam.uchicago.edu. [128.135.100.102])
        by mx.google.com with ESMTPS id ua5sm2576001igb.10.2012.09.11.09.49.53
        (version=TLSv1/SSLv3 cipher=OTHER);
        Tue, 11 Sep 2012 09:49:54 -0700 (PDT)
Content-Type: multipart/alternative; boundary="Apple-Mail=_E5A435A4-DDB7-41A5-AE01-119C188A61B8"
Mime-Version: 1.0 (Mac OS X Mail 6.0 \(1486\))
Subject: Re: [solrmarc-tech] Generalized getTitleSort function
From: Tod Olson <olson....@gmail.com>
In-Reply-To: <FAA7DF3F09441B4DA93A34DF74596140058...@VUEX14MB1.vuad.villanova.edu>
Date: Tue, 11 Sep 2012 11:49:52 -0500
Cc: Tod Olson <olson....@gmail.com>,
 Olson Tod <t...@uchicago.edu>,
 Filipov Sean <se...@uchicago.edu>
Message-Id: <E54B7E38-B879-45F7-9831-5DCADACEF...@gmail.com>
References: <FAA7DF3F09441B4DA93A34DF74596140058...@VUEX14MB1.vuad.villanova.edu> <504E6145.9060...@virginia.edu> <28BB6451-04DF-437F-BB92-02F55949E...@gmail.com> <FAA7DF3F09441B4DA93A34DF74596140058...@VUEX14MB1.vuad.villanova.edu>
To: solrmarc-tech@googlegroups.com
X-Mailer: Apple Mail (2.1486)


--Apple-Mail=_E5A435A4-DDB7-41A5-AE01-119C188A61B8
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=windows-1252

Alternately, I'd be happy to submit a couple patches in the issue =
tracker on Google Code.

-Tod

On Sep 11, 2012, at 7:36 AM, Demian Katz <demian.k...@villanova.edu> =
wrote:

> Are there any plans to systematically change protected methods to =
public?  Should we set up Tod with SVN access so he can make necessary =
adjustments?
> =20
> - Demian
> =20
> From: Tod Olson [mailto:olson....@gmail.com]=20
> Sent: Monday, September 10, 2012 8:14 PM
> To: solrmarc-tech@googlegroups.com
> Cc: Tod Olson; Demian Katz; Olson Tod; Filipov Sean
> Subject: Re: [solrmarc-tech] Generalized getTitleSort function
> =20
> Thank you, this clears up some some questions and helps me know how to =
proceed. That all makes sense, the historical reasons for "protected," =
and the changes in the environment. And good to hear that "LNK" is in =
use and supported, I expect we''ll be using it.=20
> =20
> And thank you for all of the work on solrmarc,
> =20
> -Tod
> =20
> On Sep 10, 2012, at 4:53 PM, Robert Haschart <rh...@virginia.edu> =
wrote:
>=20
>=20
> There was a good reason for that routine to be "protected"  when the =
only way that it could be called was from within the SolrIndexer code, =
or from within a class derived from SolrIndexer, (since derived classes =
can access protected members/methods in their super classes).  However =
now in light of the existence of BeanShell routines and the existence of =
IndexerMixin classes, both of which provide means of defining additional =
custom indexing functionality, and given that java has no protection =
level less restrictive than protected other than public, many more of =
the routines in SolrIndexer should be made public, to allow access from =
the BeanShell scripts and the mixins.
>=20
> Additionally, I looked at the code Tod mentioned, and the answer there =
is "Yes the LNK syntax is used, and yes it will continue to be =
supported, and yes the line of code he highlighted is indeed a bug.
>=20
> -Bob Haschart
>=20
>=20
> On 9/10/2012 4:06 PM, Demian Katz wrote:
> Bob,
> =20
> I think this email has gone unanswered (apart from my own somewhat =
inadequate response).
> =20
> Do you have any thoughts on this?  Particularly whether there is a =
particular reason that certain methods are protected =96 should we make =
more things public to increase the flexibility of customization?
> =20
> thanks,
> Demian
> =20
> From: solrmarc-tech@googlegroups.com =
[mailto:solrmarc-tech@googlegroups.com] On Behalf Of Tod Olson
> Sent: Tuesday, August 28, 2012 1:33 PM
> To: solrmarc-tech@googlegroups.com
> Cc: t...@uchicago.edu; se...@uchicago.edu
> Subject: Re: [solrmarc-tech] Generalized getTitleSort function
> =20
> So now we're trying to implement a beanshell version of getFieldList, =
but some of the methods we need to use, like getSubfieldDataAsSet, are =
protected. So there's not a good way to do this in beanshell without =
reimplementing some of these functions. And if we try to extend =
SolrIndexer in our own package, we'll just run into the same problem.
> =20
> It seems that getSubfieldDataAsSet is a pretty useful utility method =
that SolrIndex subclasses would want to use. Does it need to be =
protected? And can anyone suggest a workaround?
> =20
> The secondary question is looking ahead towards support for non-Roman =
scripts. I see in getFieldList aht there is some undocumented syntax =
supported in getFieldList for specifying linked fields, so "LNK245ab" =
should indicate the 880 that corresponds to this 245. Are people using =
this syntax in their marc_local.properties files? It certainly makes =
sense that you'd want a way to specify specific 880s in the tag list.
> =20
> But if this syntax is still intended to be supported, I think I've =
found a bug. It looks like this line:
> =20
>     String subfield =3D tags[i].substring(3);
> =20
> will erroneously set subfield to "245ab" rather than just "ab".
> =20
> If this LNK syntax is considered supported, are there constraints on =
how it is supposed to work? Or is it better to rely on the =
getLinkedField* methods?
> =20
> Anyhow, I'd appreciate any suggestions for working around this =
business of the protected static getSubfieldDataAsSet. And also any =
forward-looking suggestions for bringing in the non-Roman 880 data.
> =20
> Best,
> =20
> -Tod
>=20
> On Tuesday, August 28, 2012 7:46:41 AM UTC-5, Demian Katz wrote:
> Hopefully Bob Haschart will chime in on this =96 he=92s the main =
architect of SolrMarc, and his opinion is much more informed than mine!  =
However, I think this does sound like a sensible solution.  As you say, =
it would be great if you could take the functional programming approach =
and actually pass in the processing routine you want to use.  That=92s =
not so easy in Java, but maybe the next best thing would to be define an =
interface (i.e. MarcFilterInterface) and pass in an object that =
instantiates the interface.  Then you just use the object to process the =
matches.  Obviously, the big limitation here is that you can=92t pass =
arbitrary objects in from the SolrMarc configuration files=85  but at =
least this would allow more flexibility under the hood, and you could =
create wrapper functions as needed to be called from the configs.
> =20
> - Demian
> =20
> From: solrma...@googlegroups.com [mailto:solrma...@googlegroups.com] =
On Behalf Of Tod Olson
> Sent: Tuesday, August 28, 2012 8:39 AM
> To: solrma...@googlegroups.com
> Cc: t...@uchicago.edu; se...@uchicago.edu
> Subject: Re: [solrmarc-tech] Generalized getTitleSort function
> =20
> Thanks, that helps. After mulling it over for a bit, here's what I'm =
thinking.
> =20
> A beanshell version of getFieldList that takes an extra parameter to =
signal normalizing:=20
> =20
>   Set<string> getFieldList(String taglist, String normalizer)
> =20
> normalizer tells getFieldList whether or what kind of normalization to =
apply in it's inner loop, after it has extracted the desired subfields =
from the tag spec. If normalizer=3Dnull, then it's just like the current =
getFieldList.
> =20
> Maybe normalizer starts with a generic "sort" value, which trims =
non-sorting chars, downcases, and strips punctuation. Or maybe there's a =
"title-sort" value which knows about the non-sorting indicator, and a =
plain "sort" that doesn't include that logic. I'm not certain yet.
> =20
> Ideally, normalizer would be the name of a function/method to call to =
act as the normalizer. That would be the most general. But I don't think =
Java/beanshell is so friendly to that kind of approach.
> =20
> Anyhow, that's what I'm thinking of. Any reactions?
> =20
> -Tod
>=20
> On Monday, August 27, 2012 9:34:03 AM UTC-5, Demian Katz wrote:
> 1.)    I=92m not aware of a method that meets your need.  Perhaps it =
would make sense to refactor the existing Set<String> getFieldList to =
wrap around a separate method that returns a Set<Field>, but this does =
not look like it would be an entirely straightforward task, so it may be =
impractical.  Maybe Bob has a better idea.
> 2.)    BeanShell definitely causes a performance hit, but I don=92t =
think it=92s terribly significant.  It certainly doesn=92t hurt to =
prototype in BeanShell.  If the performance is good enough, then you=92re =
done; if you have problems, it=92s not difficult to adapt it to pure =
Java and compile it in.
> 3.)    A method that takes a fieldspec and returns an array of title =
sort keys sounds pretty generalized to me.  My only question is whether =
this could be combined with the existing getSortableTitle in some way to =
avoid redundant logic (i.e. have one work as a special case of the =
other).
> =20
> - Demian
> =20
> From: solrma...@googlegroups.com [mailto:solrma...@googlegroups.com] =
On Behalf Of Tod Olson
> Sent: Saturday, August 25, 2012 5:22 PM
> To: solrma...@googlegroups.com
> Cc: t...@uchicago.edu; se...@uchicago.edu
> Subject: [solrmarc-tech] Generalized getTitleSort function
> =20
> I'm looking to implement a generalized getTitleSortKeys method or =
function. I want to implement a bean shell function that will take a tag =
string and return the text of the requested fields and subfields with =
the non-filing bits removed and with some other normalization for =
computing sort keys. And I have a couple questions about tackling this.
> =20
> The context is that we are working with the VuFind title browse, but =
extending it so a variety of title fields in a record can show up in the =
title browse list. This means parallel fields in Solr, a title_browse =
with all of the display versions, and a title_browse_keys with the same =
data normalized for sorting into a browse list. (these then get pulled =
dumped into a relational table to provide the actual index). So we'll =
have a couple lines like this in the properties file (yes, we like to =
pull from everywhere):
> =20
> title_browse =3D =
210ab:211a:212a:214a:240:242abchnp:245abcdefghknps:246abfghnp:247abfghnp:4=
90av:740ahnp:780bcst:785bcst:787bcst:840ahv:844a                         =
                                                                         =
                    =20
> title_browse_keys =3D script(ucGetTitleBrowseKeys.bsh), =
getTitleBrowseKeys(210ab:211a:212a:214a:240:242abchnp:245abcdefghknps:246a=
bfghnp:247abfghnp:490av:740ahnp:780bcst:785bcst:787bcst:840ahv:844a)     =
                                                       =20
> =20
> Here are my questions:
> =20
> 1. Does this or some useful building block already exist? I think I'll =
have to reimplement the iteration over the tag string and handling the =
subfields. I've not really found something that would take the tag =
string and return Set<Field>. I have found methods that return a =
Set<String>, which does not give the non-filing information. If I'm =
overlooking some useful helper functions, a pointer would be welcome.
> =20
> 2. Are there any worries about implementing this in bean shell? Have =
people found bean shell to be a significant performance hit during =
indexing?
> =20
> 3. I'd like this to be general enough to be of use to others. If =
there's something about the function as described that could be =
generalized or broken out as a utility to be of more use, please let me =
know.
> =20
> -Tod
> =20
> --=20
> You received this message because you are subscribed to the Google =
Groups "solrmarc-tech" group.
> To view this discussion on the web visit =
https://groups.google.com/d/msg/solrmarc-tech/-/_qSRKdgdsvoJ.
> To post to this group, send email to solrma...@googlegroups.com.
> To unsubscribe from this group, send email to =
solrmarc-tec...@googlegroups.com.
> For more options, visit this group at =
http://groups.google.com/group/solrmarc-tech?hl=3Den.
> --=20
> You received this message because you are subscribed to the Google =
Groups "solrmarc-tech" group.
> To view this discussion on the web visit =
https://groups.google.com/d/msg/solrmarc-tech/-/WQ2NAUyfSOIJ.
> To post to this group, send email to solrma...@googlegroups.com.
> To unsubscribe from this group, send email to =
solrmarc-tec...@googlegroups.com.
> For more options, visit this group at =
http://groups.google.com/group/solrmarc-tech?hl=3Den.
> --=20
> You received this message because you are subscribed to the Google =
Groups "solrmarc-tech" group.
> To view this discussion on the web visit =
https://groups.google.com/d/msg/solrmarc-tech/-/1SysqsEvGWwJ.
> To post to this group, send email to solrmarc-tech@googlegroups.com.
> To unsubscribe from this group, send email to =
solrmarc-tech+unsubscribe@googlegroups.com.
> For more options, visit this group at =
http://groups.google.com/group/solrmarc-tech?hl=3Den.
> =20
> =20
> --=20
> You received this message because you are subscribed to the Google =
Groups "solrmarc-tech" group.
> To post to this group, send email to solrmarc-tech@googlegroups.com.
> To unsubscribe from this group, send email to =
solrmarc-tech+unsubscribe@googlegroups.com.
> For more options, visit this group at =
http://groups.google.com/group/solrmarc-tech?hl=3Den.
> =20
>=20
> --=20
> You received this message because you are subscribed to the Google =
Groups "solrmarc-tech" group.
> To post to this group, send email to solrmarc-tech@googlegroups.com.
> To unsubscribe from this group, send email to =
solrmarc-tech+unsubscribe@googlegroups.com.
> For more options, visit this group at =
http://groups.google.com/group/solrmarc-tech?hl=3Den.


--Apple-Mail=_E5A435A4-DDB7-41A5-AE01-119C188A61B8
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=windows-1252

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dwindows-1252"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space; =
">Alternately, I'd be happy to submit a couple patches in the issue =
tracker on Google =
Code.<div><br></div><div>-Tod</div><div><br><div><div>On Sep 11, 2012, =
at 7:36 AM, Demian Katz &lt;<a =
href=3D"mailto:demian.k...@villanova.edu">demian.k...@villanova.edu</a>&gt=
; wrote:</div><br class=3D"Apple-interchange-newline"><blockquote =
type=3D"cite"><div lang=3D"EN-US" link=3D"blue" vlink=3D"purple" =
style=3D"font-family: Helvetica; font-size: medium; font-style: normal; =
font-variant: normal; font-weight: normal; letter-spacing: normal; =
line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: =
0px; text-transform: none; white-space: normal; widows: 2; word-spacing: =
0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; =
word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: =
after-white-space; "><div class=3D"WordSection1" style=3D"page: =
WordSection1; "><div style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; =
font-family: 'Times New Roman', serif; "><span style=3D"font-size: 11pt; =
font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">Are there =
any plans to systematically change protected methods to public?&nbsp; =
Should we set up Tod with SVN access so he can make necessary =
adjustments?<o:p></o:p></span></div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
"><span style=3D"font-size: 11pt; font-family: Calibri, sans-serif; =
color: rgb(31, 73, 125); ">&nbsp;</span></div><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
"><span style=3D"font-size: 11pt; font-family: Calibri, sans-serif; =
color: rgb(31, 73, 125); ">- Demian<o:p></o:p></span></div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; "><span style=3D"font-size: 11pt; font-family: =
Calibri, sans-serif; color: rgb(31, 73, 125); ">&nbsp;</span></div><div =
style=3D"border-style: none none none solid; border-left-width: 1.5pt; =
border-left-color: blue; padding: 0in 0in 0in 4pt; "><div><div =
style=3D"border-style: solid none none; border-top-width: 1pt; =
border-top-color: rgb(181, 196, 223); padding: 3pt 0in 0in; "><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; "><b><span style=3D"font-size: 10pt; font-family: =
Tahoma, sans-serif; ">From:</span></b><span style=3D"font-size: 10pt; =
font-family: Tahoma, sans-serif; "><span =
class=3D"Apple-converted-space">&nbsp;</span>Tod Olson =
[mailto:olson.tod@<a href=3D"http://gmail.com">gmail.com</a>]<span =
class=3D"Apple-converted-space">&nbsp;</span><br><b>Sent:</b><span =
class=3D"Apple-converted-space">&nbsp;</span>Monday, September 10, 2012 =
8:14 PM<br><b>To:</b><span class=3D"Apple-converted-space">&nbsp;</span><a=
 =
href=3D"mailto:solrmarc-tech@googlegroups.com">solrmarc-tech@googlegroups.=
com</a><br><b>Cc:</b><span =
class=3D"Apple-converted-space">&nbsp;</span>Tod Olson; Demian Katz; =
Olson Tod; Filipov Sean<br><b>Subject:</b><span =
class=3D"Apple-converted-space">&nbsp;</span>Re: [solrmarc-tech] =
Generalized getTitleSort =
function<o:p></o:p></span></div></div></div><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
"><o:p>&nbsp;</o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; ">Thank you, =
this clears up some some questions and helps me know how to proceed. =
That all makes sense, the historical reasons for "protected," and the =
changes in the environment. And good to hear that "LNK" is in use and =
supported, I expect we''ll be using it.&nbsp;<o:p></o:p></div><div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; "><o:p>&nbsp;</o:p></div></div><div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; ">And thank you for all of the work on =
solrmarc,<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
"><o:p>&nbsp;</o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">-Tod<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
"><o:p>&nbsp;</o:p></div><div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">On =
Sep 10, 2012, at 4:53 PM, Robert Haschart &lt;<a =
href=3D"mailto:rh...@virginia.edu" style=3D"color: purple; =
text-decoration: underline; ">rh...@virginia.edu</a>&gt; =
wrote:<o:p></o:p></div></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; =
"><br><br><o:p></o:p></div><div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; "><span =
style=3D"font-size: 10pt; ">There<span =
class=3D"Apple-converted-space">&nbsp;</span><u>was</u><span =
class=3D"Apple-converted-space">&nbsp;</span>a good reason for that =
routine to be "protected"&nbsp; when the only way that it could be =
called was from within the SolrIndexer code, or from within a class =
derived from SolrIndexer, (since derived classes can access protected =
members/methods in their super classes).&nbsp; However now in light of =
the existence of</span><span style=3D"font-size: 7.5pt; =
">&nbsp;</span><span style=3D"font-size: 10pt; ">BeanShell routines and =
the existence of IndexerMixin classes, both of which provide means of =
defining additional custom indexing functionality, and given that java =
has no protection level less restrictive than protected other than =
public, many more of the routines in SolrIndexer should be made public, =
to allow access from the BeanShell scripts and the =
mixins.<br><br>Additionally, I looked at the code Tod mentioned, and the =
answer there is "Yes the LNK syntax is used, and yes it will continue to =
be supported, and yes the line of code he highlighted is indeed a =
bug.<br><br>-Bob Haschart<br></span><br><br>On 9/10/2012 4:06 PM, Demian =
Katz wrote:<o:p></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; "><span =
style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: =
rgb(31, 73, 125); ">Bob,</span><o:p></o:p></div><div style=3D"margin: =
0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', =
serif; "><span style=3D"font-size: 11pt; font-family: Calibri, =
sans-serif; color: rgb(31, 73, 125); =
">&nbsp;</span><o:p></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; "><span =
style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: =
rgb(31, 73, 125); ">I think this email has gone unanswered (apart from =
my own somewhat inadequate response).</span><o:p></o:p></div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; "><span style=3D"font-size: 11pt; font-family: =
Calibri, sans-serif; color: rgb(31, 73, 125); =
">&nbsp;</span><o:p></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; "><span =
style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: =
rgb(31, 73, 125); ">Do you have any thoughts on this?&nbsp; Particularly =
whether there is a particular reason that certain methods are protected =
=96 should we make more things public to increase the flexibility of =
customization?</span><o:p></o:p></div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
"><span style=3D"font-size: 11pt; font-family: Calibri, sans-serif; =
color: rgb(31, 73, 125); ">&nbsp;</span><o:p></o:p></div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; "><span style=3D"font-size: 11pt; font-family: =
Calibri, sans-serif; color: rgb(31, 73, 125); =
">thanks,</span><o:p></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; "><span =
style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: =
rgb(31, 73, 125); ">Demian</span><o:p></o:p></div><div style=3D"margin: =
0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', =
serif; "><span style=3D"font-size: 11pt; font-family: Calibri, =
sans-serif; color: rgb(31, 73, 125); =
">&nbsp;</span><o:p></o:p></div><div style=3D"border-style: solid none =
none; border-top-width: 1pt; border-top-color: rgb(181, 196, 223); =
padding: 3pt 0in 0in; "><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; "><b><span =
style=3D"font-size: 10pt; font-family: Tahoma, sans-serif; =
">From:</span></b><span style=3D"font-size: 10pt; font-family: Tahoma, =
sans-serif; "><span class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:solrmarc-tech@googlegroups.com" style=3D"color: purple; =
text-decoration: underline; ">solrmarc-tech@googlegroups.com</a><span =
class=3D"Apple-converted-space">&nbsp;</span>[<a =
href=3D"mailto:solrmarc-tech@googlegroups.com" style=3D"color: purple; =
text-decoration: underline; =
">mailto:solrmarc-tech@googlegroups.com</a>]<span =
class=3D"Apple-converted-space">&nbsp;</span><b>On Behalf Of<span =
class=3D"Apple-converted-space">&nbsp;</span></b>Tod =
Olson<br><b>Sent:</b><span =
class=3D"Apple-converted-space">&nbsp;</span>Tuesday, August 28, 2012 =
1:33 PM<br><b>To:</b><span class=3D"Apple-converted-space">&nbsp;</span><a=
 href=3D"mailto:solrmarc-tech@googlegroups.com" style=3D"color: purple; =
text-decoration: underline; =
">solrmarc-tech@googlegroups.com</a><br><b>Cc:</b><span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:t...@uchicago.edu" style=3D"color: purple; =
text-decoration: underline; ">t...@uchicago.edu</a>;<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:se...@uchicago.edu" style=3D"color: purple; =
text-decoration: underline; =
">se...@uchicago.edu</a><br><b>Subject:</b><span =
class=3D"Apple-converted-space">&nbsp;</span>Re: [solrmarc-tech] =
Generalized getTitleSort function</span><o:p></o:p></div></div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; ">&nbsp;<o:p></o:p></div><div><div style=3D"margin: =
0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', =
serif; ">So now we're trying to implement a beanshell version of =
getFieldList, but some of the methods we need to use, like =
getSubfieldDataAsSet, are protected. So there's not a good way to do =
this in beanshell without reimplementing some of these functions. And if =
we try to extend SolrIndexer in our own package, we'll just run into the =
same problem.<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">It =
seems that&nbsp;getSubfieldDataAsSet is&nbsp;a pretty useful utility =
method that SolrIndex subclasses would want to use. Does it need to be =
protected?&nbsp;And can anyone suggest a =
workaround?<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">The =
secondary question is looking ahead towards support for non-Roman =
scripts. I see in getFieldList aht there is some undocumented syntax =
supported in getFieldList for specifying linked fields, so "LNK245ab" =
should indicate the 880 that corresponds to this 245. Are people using =
this syntax in their marc_local.properties files? It certainly makes =
sense that you'd want a way to specify specific 880s in the tag =
list.<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">But =
if this syntax is still intended to be supported, I think I've found a =
bug. It looks like this line:<o:p></o:p></div></div><div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; ">&nbsp;<o:p></o:p></div></div><div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; ">&nbsp; &nbsp; String subfield =3D =
tags[i].substring(3);<o:p></o:p></div></div><div><div style=3D"margin: =
0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', =
serif; ">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">will =
erroneously set subfield to "245ab" rather than just =
"ab".<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">If =
this LNK syntax is considered supported, are there constraints on how it =
is supposed to work? Or is it better to rely on the getLinkedField* =
methods?<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">Anyhow, I'd appreciate any suggestions for working around this =
business of the protected static&nbsp;getSubfieldDataAsSet. And also any =
forward-looking suggestions for bringing in the non-Roman 880 =
data.<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">Best,<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">-Tod<o:p></o:p></div></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; "><br>On =
Tuesday, August 28, 2012 7:46:41 AM UTC-5, Demian Katz =
wrote:<o:p></o:p></div><div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; "><span =
style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: =
rgb(31, 73, 125); ">Hopefully Bob Haschart will chime in on this =96 =
he=92s the main architect of SolrMarc, and his opinion is much more =
informed than mine!&nbsp; However, I think this does sound like a =
sensible solution.&nbsp; As you say, it would be great if you could take =
the functional programming approach and actually pass in the processing =
routine you want to use.&nbsp; That=92s not so easy in Java, but maybe =
the next best thing would to be define an interface (i.e. =
MarcFilterInterface) and pass in an object that instantiates the =
interface.&nbsp; Then you just use the object to process the =
matches.&nbsp; Obviously, the big limitation here is that you can=92t =
pass arbitrary objects in from the SolrMarc configuration files=85&nbsp; =
but at least this would allow more flexibility under the hood, and you =
could create wrapper functions as needed to be called from the =
configs.</span><o:p></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; "><span =
style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: =
rgb(31, 73, 125); ">&nbsp;</span><o:p></o:p></div><div style=3D"margin: =
0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', =
serif; "><span style=3D"font-size: 11pt; font-family: Calibri, =
sans-serif; color: rgb(31, 73, 125); ">- =
Demian</span><o:p></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; "><span =
style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: =
rgb(31, 73, 125); ">&nbsp;</span><o:p></o:p></div><div =
style=3D"border-style: none none none solid; border-left-width: 1.5pt; =
border-left-color: blue; padding: 0in 0in 0in 4pt; "><div><div =
style=3D"border-style: solid none none; border-top-width: 1pt; =
border-top-color: rgb(181, 196, 223); padding: 3pt 0in 0in; "><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; "><b><span style=3D"font-size: 10pt; font-family: =
Tahoma, sans-serif; ">From:</span></b><span style=3D"font-size: 10pt; =
font-family: Tahoma, sans-serif; "><span =
class=3D"Apple-converted-space">&nbsp;</span><a href=3D"javascript:" =
target=3D"_blank" style=3D"color: purple; text-decoration: underline; =
">solrma...@googlegroups.com</a><span =
class=3D"Apple-converted-space">&nbsp;</span>[mailto:<a =
href=3D"javascript:" target=3D"_blank" style=3D"color: purple; =
text-decoration: underline; ">solrma...@googlegroups.com</a>]<span =
class=3D"Apple-converted-space">&nbsp;</span><b>On Behalf Of<span =
class=3D"Apple-converted-space">&nbsp;</span></b>Tod =
Olson<br><b>Sent:</b><span =
class=3D"Apple-converted-space">&nbsp;</span>Tuesday, August 28, 2012 =
8:39 AM<br><b>To:</b><span class=3D"Apple-converted-space">&nbsp;</span><a=
 href=3D"javascript:" target=3D"_blank" style=3D"color: purple; =
text-decoration: underline; =
">solrma...@googlegroups.com</a><br><b>Cc:</b><span =
class=3D"Apple-converted-space">&nbsp;</span><a href=3D"javascript:" =
target=3D"_blank" style=3D"color: purple; text-decoration: underline; =
">t...@uchicago.edu</a>;<span =
class=3D"Apple-converted-space">&nbsp;</span><a href=3D"javascript:" =
target=3D"_blank" style=3D"color: purple; text-decoration: underline; =
">se...@uchicago.edu</a><br><b>Subject:</b><span =
class=3D"Apple-converted-space">&nbsp;</span>Re: [solrmarc-tech] =
Generalized getTitleSort =
function</span><o:p></o:p></div></div></div><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; ">Thanks, that =
helps. After mulling it over for a bit, here's what I'm =
thinking.<o:p></o:p></div><div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">A =
beanshell version of getFieldList that takes an extra parameter to =
signal normalizing:&nbsp;<o:p></o:p></div></div><div><div style=3D"margin:=
 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', =
serif; ">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp; Set&lt;string&gt; getFieldList(String taglist, String =
normalizer)<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">normalizer tells getFieldList whether or what kind of normalization to =
apply in it's inner loop, after it has extracted the desired subfields =
from the tag spec. If normalizer=3Dnull, then it's just like the current =
getFieldList.<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">Maybe normalizer starts with a generic "sort" value, which trims =
non-sorting chars, downcases, and strips punctuation. Or maybe there's a =
"title-sort" value which knows about the non-sorting indicator, and a =
plain "sort" that doesn't include that logic. I'm not certain =
yet.<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">Ideally, normalizer would be the name of a function/method to call to =
act as the normalizer. That would be the most general. But I don't think =
Java/beanshell is so friendly to that kind of =
approach.<o:p></o:p></div></div><div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">Anyhow, that's what I'm thinking of. Any =
reactions?<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">-Tod<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
"><br>On Monday, August 27, 2012 9:34:03 AM UTC-5, Demian Katz =
wrote:<o:p></o:p></div><div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; "><span =
style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: =
rgb(31, 73, 125); ">1.)</span><span style=3D"font-size: 7pt; color: =
rgb(31, 73, 125); ">&nbsp;&nbsp;&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span><span =
style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: =
rgb(31, 73, 125); ">I=92m not aware of a method that meets your =
need.&nbsp; Perhaps it would make sense to refactor the existing =
Set&lt;String&gt; getFieldList to wrap around a separate method that =
returns a Set&lt;Field&gt;, but this does not look like it would be an =
entirely straightforward task, so it may be impractical.&nbsp; Maybe Bob =
has a better idea.</span><o:p></o:p></div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
"><span style=3D"font-size: 11pt; font-family: Calibri, sans-serif; =
color: rgb(31, 73, 125); ">2.)</span><span style=3D"font-size: 7pt; =
color: rgb(31, 73, 125); ">&nbsp;&nbsp;&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span><span =
style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: =
rgb(31, 73, 125); ">BeanShell definitely causes a performance hit, but I =
don=92t think it=92s terribly significant.&nbsp; It certainly doesn=92t =
hurt to prototype in BeanShell.&nbsp; If the performance is good enough, =
then you=92re done; if you have problems, it=92s not difficult to adapt =
it to pure Java and compile it in.</span><o:p></o:p></div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; "><span style=3D"font-size: 11pt; font-family: =
Calibri, sans-serif; color: rgb(31, 73, 125); ">3.)</span><span =
style=3D"font-size: 7pt; color: rgb(31, 73, 125); =
">&nbsp;&nbsp;&nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span></span><span =
style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: =
rgb(31, 73, 125); ">A method that takes a fieldspec and returns an array =
of title sort keys sounds pretty generalized to me.&nbsp; My only =
question is whether this could be combined with the existing =
getSortableTitle in some way to avoid redundant logic (i.e. have one =
work as a special case of the other).</span><o:p></o:p></div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; "><span style=3D"font-size: 11pt; font-family: =
Calibri, sans-serif; color: rgb(31, 73, 125); =
">&nbsp;</span><o:p></o:p></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; "><span =
style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: =
rgb(31, 73, 125); ">- Demian</span><o:p></o:p></div><div style=3D"margin: =
0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', =
serif; "><span style=3D"font-size: 11pt; font-family: Calibri, =
sans-serif; color: rgb(31, 73, 125); =
">&nbsp;</span><o:p></o:p></div><div style=3D"border-style: none none =
none solid; border-left-width: 1.5pt; border-left-color: blue; padding: =
0in 0in 0in 4pt; "><div><div style=3D"border-style: solid none none; =
border-top-width: 1pt; border-top-color: rgb(181, 196, 223); padding: =
3pt 0in 0in; "><div style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; =
font-family: 'Times New Roman', serif; "><b><span style=3D"font-size: =
10pt; font-family: Tahoma, sans-serif; ">From:</span></b><span =
style=3D"font-size: 10pt; font-family: Tahoma, sans-serif; "><span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:solrma...@googlegroups.com" style=3D"color: purple; =
text-decoration: underline; ">solrma...@googlegroups.com</a><span =
class=3D"Apple-converted-space">&nbsp;</span>[<a =
href=3D"mailto:solrma...@googlegroups.com" style=3D"color: purple; =
text-decoration: underline; =
">mailto:solrma...@googlegroups.com</a>]<span =
class=3D"Apple-converted-space">&nbsp;</span><b>On Behalf Of<span =
class=3D"Apple-converted-space">&nbsp;</span></b>Tod =
Olson<br><b>Sent:</b><span =
class=3D"Apple-converted-space">&nbsp;</span>Saturday, August 25, 2012 =
5:22 PM<br><b>To:</b><span class=3D"Apple-converted-space">&nbsp;</span><a=
 href=3D"mailto:solrma...@googlegroups.com" style=3D"color: purple; =
text-decoration: underline; =
">solrma...@googlegroups.com</a><br><b>Cc:</b><span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:t...@uchicago.edu" style=3D"color: purple; =
text-decoration: underline; ">t...@uchicago.edu</a>;<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:se...@uchicago.edu" style=3D"color: purple; =
text-decoration: underline; =
">se...@uchicago.edu</a><br><b>Subject:</b><span =
class=3D"Apple-converted-space">&nbsp;</span>[solrmarc-tech] Generalized =
getTitleSort function</span><o:p></o:p></div></div></div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; ">&nbsp;<o:p></o:p></div><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">I'm looking to implement a generalized getTitleSortKeys method or =
function. I want to implement a bean shell function that will take a tag =
string and return the text of the requested fields and subfields with =
the non-filing bits removed and with some other normalization for =
computing sort keys. And I have a couple questions about tackling =
this.<o:p></o:p></div><div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">The =
context is that we are working with the VuFind title browse, but =
extending it so a variety of title fields in a record can show up in the =
title browse list. This means parallel fields in Solr, a title_browse =
with all of the display versions, and a title_browse_keys with the same =
data normalized for sorting into a browse list. (these then get pulled =
dumped into a relational table to provide the actual index). So we'll =
have a couple lines like this in the properties file (yes, we like to =
pull from everywhere):<o:p></o:p></div><div><div style=3D"margin: 0in =
0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">title_browse =3D =
210ab:211a:212a:214a:240:242abchnp:245abcdefghknps:246abfghnp:247abfghnp:4=
90av:740ahnp:780bcst:785bcst:787bcst:840ahv:844a &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span =
class=3D"Apple-converted-space">&nbsp;</span><o:p></o:p></div></div><div><=
div style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: =
'Times New Roman', serif; ">title_browse_keys =3D =
script(ucGetTitleBrowseKeys.bsh), =
getTitleBrowseKeys(210ab:211a:212a:214a:240:242abchnp:245abcdefghknps:246a=
bfghnp:247abfghnp:490av:740ahnp:780bcst:785bcst:787bcst:840ahv:844a) =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div></div></div><div><div style=3D"margin: =
0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', =
serif; ">Here are my questions:<o:p></o:p></div></div><div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; ">&nbsp;<o:p></o:p></div></div><div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; ">1. Does this or some useful building block already =
exist? I think I'll have to reimplement the iteration over the tag =
string and handling the subfields. I've not really found something that =
would take the tag string and return Set&lt;Field&gt;. I have found =
methods that return a Set&lt;String&gt;, which does not give the =
non-filing information. If I'm overlooking some useful helper functions, =
a pointer would be welcome.<o:p></o:p></div></div><div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; ">&nbsp;<o:p></o:p></div></div><div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; ">2. Are there any worries about implementing this in =
bean shell? Have people found bean shell to be a significant performance =
hit during indexing?<o:p></o:p></div></div><div><div style=3D"margin: =
0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', =
serif; ">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">3. =
I'd like this to be general enough to be of use to others. If there's =
something about the function as described that could be generalized or =
broken out as a utility to be of more use, please let me =
know.<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">-Tod<o:p></o:p></div></div><div><div style=3D"margin: 0in 0in =
0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; =
">&nbsp;<o:p></o:p></div></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; ">--<span =
class=3D"Apple-converted-space">&nbsp;</span><br>You received this =
message because you are subscribed to the Google Groups "solrmarc-tech" =
group.<br>To view this discussion on the web visit<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"https://groups.google.com/d/msg/solrmarc-tech/-/_qSRKdgdsvoJ" =
target=3D"_blank" style=3D"color: purple; text-decoration: underline; =
">https://groups.google.com/d/msg/solrmarc-tech/-/_qSRKdgdsvoJ</a>.<br>To =
post to this group, send email to<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:solrma...@googlegroups.com" style=3D"color: purple; =
text-decoration: underline; ">solrma...@googlegroups.com</a>.<br>To =
unsubscribe from this group, send email to<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:solrmarc-tec...@googlegroups.com" style=3D"color: purple; =
text-decoration: underline; =
">solrmarc-tec...@googlegroups.com</a>.<br>For more options, visit this =
group at<span class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"http://groups.google.com/group/solrmarc-tech?hl=3Den" =
target=3D"_blank" style=3D"color: purple; text-decoration: underline; =
">http://groups.google.com/group/solrmarc-tech?hl=3Den</a>.<o:p></o:p></di=
v></div></div></div></div><div style=3D"margin: 0in 0in 0.0001pt; =
font-size: 12pt; font-family: 'Times New Roman', serif; ">--<span =
class=3D"Apple-converted-space">&nbsp;</span><br>You received this =
message because you are subscribed to the Google Groups "solrmarc-tech" =
group.<br>To view this discussion on the web visit<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"https://groups.google.com/d/msg/solrmarc-tech/-/WQ2NAUyfSOIJ" =
target=3D"_blank" style=3D"color: purple; text-decoration: underline; =
">https://groups.google.com/d/msg/solrmarc-tech/-/WQ2NAUyfSOIJ</a>.<br>To =
post to this group, send email to<span =
class=3D"Apple-converted-space">&nbsp;</span><a href=3D"javascript:" =
target=3D"_blank" style=3D"color: purple; text-decoration: underline; =
">solrma...@googlegroups.com</a>.<br>To unsubscribe from this group, =
send email to<span class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"javascript:" target=3D"_blank" style=3D"color: purple; =
text-decoration: underline; =
">solrmarc-tec...@googlegroups.com</a>.<br>For more options, visit this =
group at<span class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"http://groups.google.com/group/solrmarc-tech?hl=3Den" =
target=3D"_blank" style=3D"color: purple; text-decoration: underline; =
">http://groups.google.com/group/solrmarc-tech?hl=3Den</a>.<o:p></o:p></di=
v></div></div><div style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; =
font-family: 'Times New Roman', serif; ">--<span =
class=3D"Apple-converted-space">&nbsp;</span><br>You received this =
message because you are subscribed to the Google Groups "solrmarc-tech" =
group.<br>To view this discussion on the web visit<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"https://groups.google.com/d/msg/solrmarc-tech/-/1SysqsEvGWwJ" =
style=3D"color: purple; text-decoration: underline; =
">https://groups.google.com/d/msg/solrmarc-tech/-/1SysqsEvGWwJ</a>.<br>To =
post to this group, send email to<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:solrmarc-tech@googlegroups.com" style=3D"color: purple; =
text-decoration: underline; ">solrmarc-tech@googlegroups.com</a>.<br>To =
unsubscribe from this group, send email to<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:solrmarc-tech+unsubscribe@googlegroups.com" style=3D"color:=
 purple; text-decoration: underline; =
">solrmarc-tech+unsubscribe@googlegroups.com</a>.<br>For more options, =
visit this group at<span class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"http://groups.google.com/group/solrmarc-tech?hl=3Den" =
style=3D"color: purple; text-decoration: underline; =
">http://groups.google.com/group/solrmarc-tech?hl=3Den</a>.<o:p></o:p></di=
v><div style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: =
'Times New Roman', serif; "><o:p>&nbsp;</o:p></div></div><div><div =
style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times =
New Roman', serif; "><o:p>&nbsp;</o:p></div></div><div style=3D"margin: =
0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', =
serif; ">--<span class=3D"Apple-converted-space">&nbsp;</span><br>You =
received this message because you are subscribed to the Google Groups =
"solrmarc-tech" group.<br>To post to this group, send email to<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:solrmarc-tech@googlegroups.com" style=3D"color: purple; =
text-decoration: underline; ">solrmarc-tech@googlegroups.com</a>.<br>To =
unsubscribe from this group, send email to<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:solrmarc-tech+unsubscribe@googlegroups.com" style=3D"color:=
 purple; text-decoration: underline; =
">solrmarc-tech+unsubscribe@googlegroups.com</a>.<br>For more options, =
visit this group at<span class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"http://groups.google.com/group/solrmarc-tech?hl=3Den" =
style=3D"color: purple; text-decoration: underline; =
">http://groups.google.com/group/solrmarc-tech?hl=3Den</a>.<o:p></o:p></di=
v></div><div style=3D"margin: 0in 0in 0.0001pt; font-size: 12pt; =
font-family: 'Times New Roman', serif; =
"><o:p>&nbsp;</o:p></div></div></div></div><div style=3D"margin-right: =
0in; margin-left: 0in; font-size: 12pt; font-family: 'Times New Roman', =
serif; "><br class=3D"webkit-block-placeholder"></div>--<span =
class=3D"Apple-converted-space">&nbsp;</span><br>You received this =
message because you are subscribed to the Google Groups "solrmarc-tech" =
group.<br>To post to this group, send email to<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:solrmarc-tech@googlegroups.com" style=3D"color: purple; =
text-decoration: underline; ">solrmarc-tech@googlegroups.com</a>.<br>To =
unsubscribe from this group, send email to<span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:solrmarc-tech+unsubscribe@googlegroups.com" style=3D"color:=
 purple; text-decoration: underline; =
">solrmarc-tech+unsubscribe@googlegroups.com</a>.<br>For more options, =
visit this group at<span class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"http://groups.google.com/group/solrmarc-tech?hl=3Den" =
style=3D"color: purple; text-decoration: underline; =
">http://groups.google.com/group/solrmarc-tech?hl=3Den</a>.</div></blockqu=
ote></div><br></div></body></html>=

--Apple-Mail=_E5A435A4-DDB7-41A5-AE01-119C188A61B8--