To build on Nate's suggestion...
> Sorting a list of call numbers is pretty easy; doing it efficiently
> for large datasets is rather more tricky. I'm not totally sure, but
> the best course of action may be to transform the call numbers into
> something indexable (say, a string) that follows the same ordering
> rules as your call numbers.
If you're retrieving the data from your ILS and the ILS already has a normalized call number field, you would want to retrieve that in addition to your display call number. That would allow for sorting by call number rather than by a database ID and would allow for easier updates of the data (i.e. you wouldn't have to re-generate the entire database ID index). If your ILS doesn't have normalized call numbers, you might want to normalize them yourself as part of the data load process.
-- Michael
# Michael Doran, Systems Librarian
# University of Texas at Arlington
# 817-272-5326 office
# 817-688-1926 mobile
# [log in to unmask]
# http://rocky.uta.edu/doran/
> -----Original Message-----
> From: Code for Libraries [mailto:[log in to unmask]] On
> Behalf Of Nate Vack
> Sent: Wednesday, September 17, 2008 11:36 AM
> To: [log in to unmask]
> Subject: Re: [CODE4LIB] creating call number browse
>
> On Wed, Sep 17, 2008 at 11:17 AM, Stephens, Owen
> <[log in to unmask]> wrote:
>
> > To start, get a report from your ILS with this info in it, sorted by
> > Call Number. To populate the table, import your data (sorted in Call
> > Number order). The Database ID will be created on import,
> automatically
> > in call number order (there are other, almost certainly
> better, ways of
> > handling this, but this is simple I think)
>
> The trick here comes, of course, when you want to add a book to the
> middle of your database without re-generating the entire index -- that
> operation may be expensive.
>
> Sorting a list of call numbers is pretty easy; doing it efficiently
> for large datasets is rather more tricky. I'm not totally sure, but
> the best course of action may be to transform the call numbers into
> something indexable (say, a string) that follows the same ordering
> rules as your call numbers.
>
> Then, compute the transformation of all your call numbers and drop an
> ordinary index on the field.
>
> -Nate
>
|