Get Your Head Right

You’re probably already done this, but get started with a quick Google search and a search through Wikipedia.

Why?  As you probably already know, these sources:

  • …are easy to read without being an expert in the topic.
  • …give you the overview without digging into the details.
  • …once you read them, make you more prepared to read more scholarly things.

Wikipedia, seriously?

Yeah.  Wikipedia is an example of an encyclopedia, like say Encyclopedia Britannica.  You shouldn’t cite it, because it won’t provide you with anything but a general overview of a topic… but similarly, you shouldn’t cite Britannica either.  Use these to get going, but not as a source for things you’ll put in your paper.

Better Overviews

Gale Virtual Reference Library (GVRL) is a giant resource of special encyclopedias that dig into topics more deeply, and like Wikipedia, they are written such that people who are not experts in the topic can understand.  You should use GVRL because in addition to Wikipedia and Google, it:

  • …often provides easy to read overviews of topics that are more comprehensive than Wikipedia.
  • …is written by experts in the subjects, so worrying about authorship is not a worry.
  • …provides perspectives on a topic from a variety of viewpoints.
Posted in Uncategorized | Leave a comment

The Best Search Box Ever.

I’ve just made a little Windows 7 Gadget for our library.  It’s a nifty little tool that allows a library search to sit on the user’s desktop, providing immediate access to library resources, even when the library website is not pulled up in the browser.  The Gadget itself isn’t innovative, though – it’s the search box in it.

Here is how we’ve designed our search:

  • Default search option is “Discovery,” which searches our instance of EBSCO Discovery Search, pre-limited to “in the library collection”
  • Our search listens for stop words like “hours,” “databases,” “JSTOR,” and “Noodlebib” – and instead of doing a discovery search for those terms, it takes users to the resource they were actually looking for.
  • It also listens for format modifiers.  So if I type in “globalization ebooks”, I’m going to get ebooks about globalization, not anything in discovery search that has those two terms in it.
  • Blank searches return intelligent results.
  • Finally, it uses LibAnswers to provide autocomplete, so if they ARE typing in a “research help” query and not a topical query, LibAnswers will suggest various pages in our FAQs.

Here’s a video of it in action (best viewed full screen).

Defaulting to Discovery

Very early in the design process for our website, we decided that the default search for our home page should be our Discovery Search, and that the results should be limited to those things that provided students with instant gratification… in other words, those materials that are available online through one of our databases or the physical collection.  We’re not trying to compete with Google, but we want to make solid, library resources more accessible.  We know students are going to search Google first; we just want to make sure that if they give the library search a shot, it doesn’t scare them away with a million articles only available through Interlibrary Loan or asking them to select a specific database or subset of results.

Stop Words

After a few months of tracking what searches came through our search box, we identified frequently used search terms that were likely resulting in failed searches.  For example, “jstor” appeared multiple times, and what searchers ended up at was a list of articles, books, videos that mentioned JSTOR in the metadata for some reason.  The listing was incomprehensible, and didn’t take users to our JSTOR subscription.  So, our search box pays attention for stop words that we define based on the top searches.  Now, “jstor” takes a user right to the JSTOR landing page.

Other stop words include:

  • apa
  • mla
  • s&p
  • hoover’s
  • hours
  • databases
  • ebooks
  • videos
  • noodlebib
  • …and more

We periodically review the search logs to determine if there are new trends in searching to pay attention to.

Format Modifiers

In a recent usability test of EBSCO Discovery Service, when asked to find books about politics and elections, users typed in “elections politics books”.  EDS returned a short list of journal articles ABOUT elections, politics, and books along with some book reviews.  So, we decided to add listeners for formats.  Now, when someone types in globalization ebooks, the “ebooks” term triggers a “Did You Mean…” page that re-constructs the search without the format term, and instead setting a format limiter.

Blank Searches

In the next round of search log analysis, we noticed that the blank search was frequently used.  Users would select “ebooks” from the dropdown menu and enter in nothing into the search box.  EBSCO discovery search would return all of our eBooks in a massive results set.  Instead, we redirect this blank search to our eBook collections.  The same goes for our catalog search, etc.

LibAnswers Autocomplete

Being hesitant to add a third search box to the screen (the second one near the top is mandated by our campus web), I was thrilled to find a way to make LibAnswers autocomplete our search box.  If users begin to type a word that matches an answer in our LibAnswers FAQ system, suggestions pop up below the search box, providing quick access to answers about using the library, doing research, and other reference and instructional materials.

The Best Search Box Ever

I will be user testing this soon, but the first student I showed it to flipped out (in a good way).  She was thrilled to be able to type in anything and get exactly what she wanted, whether her search was about the library or about a topic she was trying to research.  The fact that it was in a Gadget she could mount on her desktop added extra “wow” factor.

I’ll post soon on user testing, and I’m getting some support from LibAnswers to implement this on our website home page, not just the Gadget… but it looks like this next iteration of our search box is a winner by many counts.

The website and the search Gadget at CC-BY 3.0 licensed, so feel free to steal and edit – and let me know if you did!

Posted in Uncategorized | 1 Comment

Research Guide Recommendations

Note: This is a collaborative project with Doug Shuga, soon-to-be graduate of The University of Texas at Austin School of Information.  You need to hire him.

This excellent article by William B. Lund and Chad Hansen at Brigham Young University demonstrates how one can embed subject-relevant research guides into search results.  The beauty of this is the usage of third-party search algorithms and result sets to identify the broad subject area of a search, regardless of what the user types into the search box.

A user can type anything into a search box.  Any word, any phrase, misspellings, colloquialisms.  Because of the open-ended nature of the search box, it’s not easy to use search terms to do anything useful outside of re-running a search somewhere else.  If a user types in “evolution and creationism”, I have no easy way of mapping those terms to our biology or religion subject guides.  We can’t possibly map the infinite words users might type in.

Enter Mr. Lund and Mr. Hansen’s brilliant idea.  Let a third party do the hard part by providing a search algorithm and relevant search results.  Use the search results to figure out useful information about the search. Lund and Hansen used LibraryThing.  I used Ebsco Discovery Service (EDS), but really, this could be done in any interface that produces search results with some form of call numbers.

This project is about placing subject-relevant research guides in a user’s search results in EDS.


Call numbers provide a way to identify the subject area of a search. Relevant research guides can then be presented.

A user types in some search terms and hits “Search.”  Ebsco Discovery Service brings back relevant search results, many of which are books from our library’s catalog.  In the search results screen, under each result that was pulled from our library catalog, you’ll see call numbers.

Our javascript screen-scrapes all the call numbers that appear on the search results page.  It then maps those call numbers to subjects – this is easy enough to do because LC call number ranges map to specific subjects (e.g., call numbers beginning with “N” are Fine Arts, call numbers beginning with “HV” are social pathology in the social sciences).  It then ranks the subjects based on frequency of appearance, and provides links to associated research guides.

Here’s a video demonstrating what it does.

Here’s a document that maps our research guides to call number ranges.


Before you begin to code, you first need to identify what subject-based research guides you have.  Ignore any course-specific research guides, as there won’t be any way to tell from the search results if the student is researching for a particular course.

With a list of subject-based research guides, identify the call number ranges associated with those subjects using the Library of Congress call number ranges.  You could do this with Dewey, in theory, too.  This will identify which call number ranges you should be looking for in your search results.  You may have gaps; for example, you may not have a research guide for Engineering if your school does not have an engineering program.  This is fine – you only need to identify the call number ranges for which you have subject guides.

The first step in coding is to use javascript’s attribute to grab all of the HTML code from the page.  At St. Edward’s, all of the call numbers on the page can be identified by the preceding string, “Call No. “.  The code looks for the first instance of this string and grabs the next set of characters until it hits a space.  This effectively grabs only the first portion of the call number, not the entire call number string.  This is all we need to identify the subject.  The code repeats this process until no more instances of “Call No. ” are found.

What results is an Array filled with the first portions of the call numbers on the page (e.g., “N”, “HV7332”, or “QH”).  The next step is to map the call number prefix to specific subjects and tally how many hits we have from each subject area.  We iterate through the entire array, matching each item with a predefined set of call number prefixes.  If we have a match (e.g., “N” was in the array and we have identified “N” as Art and Art History), we increment a counter for the relevant subject area.

Because the script compares strings, it reads call numbers more like Dewey than LC.  For example, BJ2200 is greater than BJ1 and less than BJ23. To avoid false positives, we need to add an extra step to each comparison, stripping away the letters and using parseint() to convert the rest to simple integers. When the comparison is done this way, JavaScript knows that 2200 is greater than 23. This is not implemented in any subjects besides Philosophy right now because the problem is rare outside of that subject area and of a character limit in our code I’ve noted below.

After counting up how many hits there were in our defined subject areas, we sort from highest to lowest, excluding all subjects that had no hits.  We then display URLs associated with the subjects in an Ebsco Discovery Service widget on the right side of the results screen.

Here’s the code in .txt format.  (You may need to right-click and do a ‘Save as…’ to see the code.)

In the code, you’ll notice a built-in delay of about 2 seconds.  This gives EDS enough time to do the real-time availability check and display the call numbers before the script runs.


We hit a character limit with Ebsco Discovery Service’s widgets.  The full code that included all of our subject guides exceeds the allotted 8000 characters.  When trying to place the code on another server and using an iFrame to bring in the code, we found out that most modern browsers prohibit the kind of screen scraping we’re doing if the code doing the scraping is not on the same domain as the page being scraped.  For now, we’ve asked for Ebsco to up the character limit so we can finalize this project.

This only works if the search results have books with call numbers, and will change from page to page of results depending on the results on that page.  We tried to identify other sources of finite, subject-rich information on the page, but only subject headings provide that – and even then, there are too many subject headings from the variety of databases we have to make it worthwhile to attempt to map them to subject guides.

This is a bit more work intensive than other projects – if a new guide is produced, it will require identifying relevant call number ranges and adding code in three different places in the widget.  Same if a guide is deleted.  The work isn’t difficult, but there is maintenance to be done.

The links and what they do should probably be more obvious; we haven’t done any user testing to see if users notice them, or if they’d be useful.

Our Research Guides need to be standardized.  I mentioned this in my Blackboard / Research Guides post, so this is just raising the urgency for improving our guides.

Posted in Ebsco Discovery Service, LibGuides | Leave a comment

Ebsco Discovery Service / III Request This Widget

Ebsco Discovery Service is pretty sweet, all things considered. They smash together their own databases with our catalog with other databases like JSTOR, ScienceDirect, and others. For a single index with a variety of types of material, it does a pretty good job providing an all-in-one bucket experience.

To request a book, you would have to know to click on "Classic Catalog View" - something none of our users did in usability testing.

This project is about adding a “Request This” widget to the EDS interface for books that are currently checked out. Prior to this project, the biggest usability failure of EDS was the ability to place holds on checked out books. There simply was no way to do it – you had to know the click on the small “Classic Catalog View” link on the left (see screenshot) to get to the screen that has a “Request This” link – something none of our users tried when we asked them to place a hold on a book.


This is a pretty basic function that combines some simple screen scraping with URL creation. Essentially, my widget looks on the screen for an item’s Ebsco accession number to determine if the item is a catalog record. If it is, then it proceeds to scrape real-time availability data from the page to determine if a book is requestable or not (we only allow requests on circulating books that are currently checked out). If it is requestable, it will display a link that places the hold.

Here’s a video of the widget in action for both requestable items, and items that cannot be requested.


The information circled is what determines the "requstability" of an item.

The first step is to look at your catalog records in Ebsco Discovery Service – and specifically, at the accession number. Our catalog records all contain the string “stedwards”, our institutional identifier, so the javascript code can quickly identify if the record is a catalog item or not.

The rest of the accession number is the item’s record number from Millennium. This is needed to make the “Request This” target URL, so the javascript grabs this, too.

Next, the javascript looks for a div marked “rtac”, which stands for Real-Time Availability Check. In this div, the javascript finds a table with three columns: location, call number, and availability. It stores each of these in its own variable.

What follows is the requestability logic – if the item has a DUE ##-##-#### status, it is requestable. If that is the case, then it makes a URL (using the Millennium record number) for requesting the item.

The rest of the logic provides additional information on how to get the item if it isn’t requestable. The location code “ONLINE” triggers a message telling the use where to click to access full-text. The LIBUSEONLY status triggers a message saying they can come to the library to use it, but it cannot be checked out. And so on…

Here’s the code in .txt format. (You may need to right-click and do a ‘Save as…’ to see the code.)

I added the variables at the beginning to make it easy to customize for your own institution. All you need to do is make a few decisions on what is requestable or not (do you allow users to place holds on available items?) and enter in your institution’s Ebsco Discovery Service identifier (ours is “stedwards”), along with how your EDS implementation represents AVAILABLE and CHECKED OUT items.


You’ll see his name multiple times in future posts – Doug Shuga. He’s a University of Texas iSchool student working with me for his capstone project. He and I tried to get the “Request This” widget to simply not show up for non-requestable items.  It could not be done. Even if you use javascript to overwrite (or hide) the widget, it causes code problems on the rest of the page. This means that the “Request This” Widget appears even when there is nothing to request. Like I mentioned above, it displays helpful text, but still, it would be better if it didn’t show up at all.

On a positive note, Ebsco’s next release will include the ability to turn off widgets based on data in the real-time availability check. This also makes me think that screen scraping won’t be necessary in future widgets, and that RTAC data will be available via a token.

Posted in Ebsco Discovery Service, Millennium | Leave a comment

Course-specific Library Links in Blackboard, Moodle, or any LMS you can name

Screen-scraping is a fantastic tool.  It allows your webpage to react to other elements on the page.  This is particularly useful when you only have editing privileges on specific parts of the page – and this is the case in many learning management systems like Blackboard.

This project is about getting relevant library research guides into course websites with minimal to no faculty effort and minimal to no librarian effort.  It is one part javascript and one part politics.  Here’s how it works, with details to follow.


If your LMS displays a course ID, or a department name, or any other kind of information that would indicate the subject area of the course, you're in business.

First, look at a course site in your learning management system.  Is there any information on the page that would give you a clue as to what subject the class is about in a controlled-vocabulary kind of way?  The most obvious candidate is a course number, which usually includes a three-letter or four-letter code for what department or major the course is offered in (e.g., “BIOL” for Biology, “ENG” for English).

If that information is there, you’re good to go.  You can use Javascript to pull out that course code, match it against a table that specifies which library webpages are associated with which codes, then display the associated web page. You write this Javascript in a new blank page in your LMS.

Then comes politics.  I’m very lucky to have an IT unit on campus with a pedagogical focus.  They are also extremely friendly to the library.  I’m hoping it will be easy to convince our Blackboard administrators to include this page in the shell of every new course created at the University.  I also plan on approaching our University’s Faculty Senate, who were also instrumental in providing feedback on our new library’s website.

The result?  Every course site comes standard with a Library Resources link that points to the most relevant research guide for their class.  I would like it to be in each course by default, and give faculty a choice to opt-out.  This is how it works with our current link to “Ask a Librarian”.  Courses that do not have a specific research guide are directed to the library home page instead.

Details for Blackboard

Here is the javascript code for Blackboard.  This assumes that your course IDs all begin with a four-letter school or major code, and it is commented.

Download the Code in .txt format

Please remove ALL COMMENTS from this code before you paste it into Blackboard.  For some reason, Blackboard does not like to have comments in your code, and it will break the code.  I have also discovered that Blackboard hates loops, which would have made it easier to find a four-letter code anywhere in the courseID, not just at the front.

Paste this code into a New Blank Page (video on how to do this) in a blackboard course to try it out and customize it.

Once you’ve tested it, added all your links and link labels, ask your Blackboard administrator to add this page to the shell of every new class that is created.  Be prepared with a demonstration (video of a demonstration) of how it works and describe how this eliminates any friction with faculty.

Moodle, Sakai, other LMSs

The concept remains the same for other LMSs.  In Moodle, there is no div tag with the id “breadcrumbs”.  The closest you can get is the “header” id tag.  This is fine – grab that.  Then you’ll have to identify a way of telling javascript where to find the course number.  In Simmons GSLIS’s Moodle implementation, it’s always the second li tag within the “header” div that contains the course number, so we can use that.

The only think that changes are two lines of code near the top.

Code for Moodle in a .TXT file (untested – I don’t have edit privileges in that Moodle)

I’m sure it will be very similar for other LMSs.  If your pages are embedded in an iFrame, you might have to add in front of the document.getElementById function in the code.

Project To-Do List

Standardize LibGuides

Currently our LibGuides do not have any standard feature.  Even LibGuide landing pages vary greatly from Subject to Subject.  If this is to be some student’s primary access point to library resources, some standard features should be on the landing page from Blackboard.  Our library has not had this discussion yet, but I like UT Arlington’s LibGuides pages.  Each subject guide has standard library services links, librarian profile, and major resources for the subject (example, example, example).  Kudos to them for having such consistency!

Usability Testing

After standardization, I want to know if the LibGuides they hit from their course pages makes sense.  Would it be more appropriate to send them to the general library page?  What are they looking for when they click the link that says “Library Resources”?  What do they expect to find when they click on it?  Does the link live up to expectations?

Posted in Blackboard, LibGuides | 4 Comments