Skip to content
Web application designed to perform digital humanities research tasks on a database of journal articles. Frontend written in Rails, backend database stored in Solr.
Ruby HTML JavaScript CSS Shell
Find file
Failed to load latest commit information.
.tx Add support for cooccurrence analysis.
app Match translation keys, variable, form, param names.
bin Update ChangeLog and setup script. [ci:skip]
config Match translation keys, variable, form, param names.
db Move the feature flag DB check to the seed phase.
lib Forcibly require CSV to make sure it's loaded.
public Update robots.txt, fixing denial of the search page.
spec Match translation keys, variable, form, param names.
tmp Check a temp directory into the Git repository.
vendor Switch from Bower to NPM for asset management.
.env.example Move last settings into .env, kill Setting model.
.env.test Move database configuration into .env.
.gitignore Switch from Bower to NPM for asset management.
.rubocop.yml More rubocop cleanups.
.travis.yml Switch from Bower to NPM for asset management.
.yardopts Massive update to source documentation.
COPYING Update copyright years. Show friendly, translated names for feature flags in the admin.
Gemfile Generate search API w/ pure Ruby, kill RABL.
Gemfile.lock Generate search API w/ pure Ruby, kill RABL. Fix migrations so they'll run on a fresh DB.
Rakefile Update to Rails 4.2 RC3. Update to Rails 4.2 RC3.


Build Status Dependency Status Code Metrics Test Coverage Inline docs External API Docs Code Docs

Author: Charles Pence
Contributors: See Contributors section below
Copyright: © 2014–2016 Louisiana State University
License: MIT License
Latest Version: v2.0.1
Release Date: January 12, 2015

RLetters is an application designed to let users perform complex searches as well as digital-humanities and text-mining analysis tasks on a corpus of journal articles.


Text analysis

RLetters allows users to save the results of a given search as a "dataset." This produces a saved record that users can return to later in order to perform text analysis tasks.

While text analysis tasks are a current area of active development in RLetters, currently the following are available:

  • Compute term frequency information (for single words or multiple-word phrases)
  • Compare word usage in two different datasets
  • Graph dataset by publication date
  • Determine statistically significant pairs of words (collocations) or associations between words at distance (cooccurrences)
  • Compute network of words used around a focal word
  • Extract references to proper names (locations, people, organizations)
  • Export dataset as citations in a variety of formats

Complex search

The Solr backend on which RLetters is based allows for a number of complicated searching operations:

  • Searching on the basis of particular fields ("year:2010", "authors:Johnson", or "title:fish")
  • Boolean operators ("darwin OR huxley")
  • Wildcard search ("*fish" or "wom?n")
  • Text stemming ("evolution" matching "evolutionary" or "evolutionist")
  • Fuzzy matching (matching words similar to the requested term)
  • Proximity searching (two terms within N words of one another)

Support for web and library standards

RLetters features a JSON API to return search results to other services around the internet. We also provide support for the following web and library standards:

  • unAPI for automatic bibliographic data retrieval from individual documents
  • WorldCat OpenURL Registry for detection of the OpenURL resolver of the user's local library

And you can export bibliographic data in the following standard formats:

Cutting-edge development and maintenance tools

RLetters doesn't leave your developers out in the cold, either. We've got support for the following features that make development, deployment, maintenance, and monitoring easier:

Installation / Deployment

See our detailed installation and deployment guide for instructions. For the extremely impatient:

# Install Ansible 1.3+ from your local package manager
# Establish passwordless SSH with passwordless sudo to your server running RHEL/CentOS 7
git clone git://

cd ansible-playbook/deploy
cp hosts.example hosts
$EDITOR hosts
  # Point all these paths at your server
ansible-playbook -i hosts site.yml

# Open up a web browser to http://YOUR_SITE/admin/
  # Log in with / password
  # Configure any other settings that strike your fancy

Contributors / Support

Special thanks to all contributors to the code here on GitHub. A full list of contributors including their patches can be found at:

We also have received the help of a great community of translators at Transifex. Thanks especially to Alejandro León Aznar.

Also, several features of RLetters wouldn't be possible without the excellent work of other Ruby programmers. Thanks in particular to those behind Ansible, RSolr and RSolr::Ext, stanford-core-nlp, citeproc-ruby, and bibtex-ruby. The stop lists found in db/seeds/stoplists are released under the BSD license by the Apache Lucene project. The colors in lib/r_letters/visualization/color_brewer are released by the ColorBrewer project under the Apache license. The fonts found in vendor/fonts are released mainly under the OFL license; licensing information is found with each font.

Charles Pence and Grant Ramsey were supported in the development of RLetters by the National Science Foundation, #1456573, and the National Evolutionary Synthesis Center (NESCent), NSF #EF-0905606.

National Science Foundation National Evolutionary Synthesis Ceter


RLetters © 2014–2016 Louisiana State University, © 2011–2014 Charles Pence. RLetters is licensed under the MIT license. Please see the {file:COPYING} document for more information.

Something went wrong with that request. Please try again.