From: Demian K. <dem...@vi...> - 2013-01-11 14:51:16
|
Oh, one other important detail -- obviously this would require a multi-valued call number field. Since you can't sort on a multi-valued field, that's another reason you'll need separate fields for sorting vs. searching/displaying. - Demian ________________________________________ From: Demian Katz Sent: Friday, January 11, 2013 9:50 AM To: Nathan Tallman; Osullivan L. Cc: vuf...@li... Subject: RE: [VuFind-Tech] [VuFind-General] Call Number Searching / Browsing I think you can solve all of these problems with custom indexing scripts. To get sorting right, you need a function that normalizes call numbers into a sortable format. e.g. explode on the hyphen, then pad the number with zeroes to a fixed length. (Obviously for this to work best, you would need separate fields for displaying vs. sorting call numbers). To get the ranges right, you would need a function that takes in the single call number string and converts it into an array of call number values... i.e. input = "SC-5464-SC-5468", output = array("SC-5464", "SC-5465", "SC-5466", "SC-5467", "SC-5468"). To address the inconsistency, your function would just need to be able to handle all the different cases (and perhaps throw an exception if it doesn't understand the string in order to help you find cases you're not already aware of). Easier said than done, I realize, but definitely possible. - Demian ________________________________________ From: Nathan Tallman [nta...@gm...] Sent: Friday, January 11, 2013 9:29 AM To: Osullivan L. Cc: vuf...@li... Subject: Re: [VuFind-Tech] [VuFind-General] Call Number Searching / Browsing On a related, but separate note, we'd like a similar feature. Most of our call numbers are really collection numbers, and sometimes expressed as ranges in the MARC record (099 field). For example, "MS-564" or "SC-5464 to SC-5468". The default call number sorting (in alpha browse) doesn't really work for our records, because you get things like, MS-1, MS-10, MS-100 instead of MS-1, MS-2, and so on. We'd like to have the second scenario work out. And perhaps add the title in the display as well. The other, and more relevant note, has to do with ranges. When a MARC record has SC-5464 to SC-5468 and someone searches SC-5465, they get no results. Would it be possible to return the record with SC-5464 to SC-5468? Our old OPAC did this. The tricky wicket is that ranges are not always entered the same way. Sometimes it's what I've already described (using "to") and sometimes it's a hyphen (SC-5464-SC5468 or SC-5464-5648). I think I've been told the first scenario is doable, I've just no idea how to do it. Not sure if the second is possible, given that the way ranges are expressed varies in the records. Thanks! Nathan On Fri, Jan 11, 2013 at 6:34 AM, Osullivan L. <L.O...@sw...> wrote: > Hi Tod, > > Apologies for the delay in replying - I lost this e-mail in the mountain of > e-mails I had after the New Year. > > I have managed to get the items to display in the correct order with some > custom indexing but I hit a snag with the ultimate goal of my attempts which > was to add call number range searching. > > getFullNormalizedLCCN.bsh > > import org.marc4j.marc.Record; > import org.solrmarc.tools.CallNumUtils; > org.solrmarc.index.SolrIndexer indexer = null; > > /** > * Normalize a single LCCN > * @param lccn > * @return Normalized LCCN > */ > public String getFullNormalizedLCCN(Record record, String lccn) { > > if (lccn != null) { > > lccn = indexer.getFirstFieldVal(record, lccn); > > String recordID = "1"; // Need to assign real value from record? > > if (lccn != null) { > > String normal = CallNumUtils.getLCShelfkey(lccn, recordID); > > if (normal != null) { > // Send back normalized LCCN: > return normal; > } > } > } > > // If we got this far, we couldn't find a valid value: > return null; > } > > marc_local.properties > callnumber-norm_str= script(getFullNormalizedLCCN.bsh), > getFullNormalizedLCCN(852hi) > > schema.xml > <field name="callnumber-search" type="string" indexed="true" stored="true"/> > > searches.ini > [Sorting] > ; Use the "callnumber" line for LC or the "dewey-sort" line for Dewey > Decimal. > ; If you want to enable both systems for sorting, you can uncomment both > lines, > ; but you will need to add some custom text to distinguish between the two. > callnumber-norm_str = sort_callnumber > > [DefaultSortingByType] > CallNumber = callnumber-norm_str > > Cheers, > > Luke > > On 12/27/2012 02:36 PM, Tod Olson wrote: > > Luke, > > Did you ever come up with a solution to this problem? > > We're in a similar way, wanting the call number browse to reflect call > number shelving order. > > -Tod > > On May 21, 2012, at 8:22 AM, Osullivan L. <L.O...@sw...> wrote: > > Hi Folks, > > One of our subject librarians has asked us to change the way results are > displayed when a callnumber search is performed. > > Basically, if someone searches for PQ239, she would like the results > returned to be PQ239, PQ239 > ABC, PQ239 .A22 2011, PQ239 .W55 2011, PQ240, > PQ2390 etc > > At present, we are getting a lot of PQ2391, PQ2392 etc at the top of our > results... > > The problem I see it two fold - To get what she ideally wants, we'd need to > restrict all callnumber search to exact matches using the callnumber-a field > and then create more fields to provide sorting for the rest of the > callnumber. Has anyone done something similar? > > Thanks, > > Luke > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > ______________________________ > _________________ > VuFind-General mailing list > VuF...@li... > https://lists.sourceforge.net/lists/listinfo/vufind-general > > > -- > Luke O'Sullivan > Systems Developer > Web Team > Swansea University, Singleton Park, Swansea SA2 8PP, UK > l.o...@sw... > 01792 602772 > @l_os_cymru > > > ------------------------------------------------------------------------------ > Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and > much more. Get web development skills now with LearnDevNow - > 350+ hours of step-by-step video tutorials by Microsoft MVPs and experts. > SALE $99.99 this month only -- learn more at: > http://p.sf.net/sfu/learnmore_122812 > _______________________________________________ > Vufind-tech mailing list > Vuf...@li... > https://lists.sourceforge.net/lists/listinfo/vufind-tech > ------------------------------------------------------------------------------ Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and much more. Get web development skills now with LearnDevNow - 350+ hours of step-by-step video tutorials by Microsoft MVPs and experts. SALE $99.99 this month only -- learn more at: http://p.sf.net/sfu/learnmore_122812 _______________________________________________ Vufind-tech mailing list Vuf...@li... https://lists.sourceforge.net/lists/listinfo/vufind-tech |