What's this site for?
Pretty much what it says on the box. You search for the title of an SF or fantasy novel, and the site gives you a few other similar titles you might enjoy.
Okay, yes, but how does it work?
It's built on a copy of the database from the good people at the
Internet Speculative Fiction Database.
Each item in the database has a set of user-added tags--
1984, for instance, has "dystopia", "social criticism", and so on.
What this site does is look at English-language novels from the database, then generate and store a
Jaccard similarity coefficient based on the tag sets of each pair of novels.(It's a pretty labor-intensive process and takes a while, so it's only done when the ISFDB itself updates once or twice a month.)
Then when you search for a title, the site returns a list of a few other novels based on how similar their tag sets are in decreasing order. (This assumes the novel you've based your search on has an adequate number of tags and is similar enough to something else in the database. More on that in a minute.)
It looks kind of...basic.
Well, yes. It's a work in progress, and it's just me and my background mostly as a back-end developer down here in the web mines, so it's largely a matter of me hammering on the CSS until things look semi-reasonable. It'll get there. There's more styling coming, and a couple of other planned features like cover image displays and links to buy the books if you're so inclined. The whole thing will need an accessibility pass, too, once I get it looking decent. (I also need to automate the monthly/semimonthly refresh of the database, but that's going to be slightly more annoying.)
It didn't find any similar books.
Sorry! That'll happen, unfortunately, especially with less-well-known or less popular books. It's a function of what gets tagged and how much in the ISFDB. If there aren't enough tags associated with your book, or they're not similar enough to tags on other works, then there won't be any suitable matches or recommendations.
Fortunately, you can help, if you're so inclined--just go over to the ISFDB's
signup page, create an account, and start adding some suitable tags to the book you searched with. They'll get picked up and rated for similarity at the next database refresh.
Why just novels? Why just in English?
Basically to keep the complexity down. The ISFDB is
huge, and includes short stories, audiobooks, comics, art collections, and so on.
Generating similarity coefficients for every item in the database would take an unreasonable amount of time for what's (currently) a smallish hobby project.
Limiting the data to the subset of English-language novels with a reasonable number of tags keeps things manageable for the moment.
Why use tags and not user ratings?
That's actually how the idea for this site first started out--having users rate books, then generating (e.g.) a
cosine similarity
between their lists of ratings to find users with similar tastes and recommend books accordingly. However, you run into a few problems/headaches:
- The added overhead of a user system, and all the security and data protection that entails.
- The cold start problem--your first users are unlikely to have
similar tastes, and it's probable they won't find any good recommendations at first.
- Calculating similarity is more complex. You need to watch for user updates as well as item ones.
Recommending based on tags (content-based filtering) instead of user ratings (collaborative filtering) simplifies things a
lot.