The best kittens, technology, and video games blog in the world.

Sunday, July 07, 2013

How to make even better

Chipmunk Checking Email by Stewf from flickr (CC-NC-SA)

If you play any Magic: the Gathering even semi-seriously, you'll need a card search engine. There's an official one by WotC - Gatherer - but it's overall miserable.

Fortunately some good people created a far superior alternative of It's not only a good search engine, it should be a mandatory study example for anyone who makes search engines for advanced users.

All advanced functions are converted into simple text options key:value, and there's a lot of leeway in how the values are parsed - so these keys are easy to discover (by using advanced search), and after a few times using advanced search you'll be using even fairly fancy queries comfortably.

Anyway, however great is, it is not without problems, so let's talk about them.

No syntax for searching blocks

If you want to search all cards in Return to Ravnica block you need to type (e:rtr or e:gtc or e:dgm). That's not horrible for new blocks, but for many older blocks you might not remember codenames of individual sets or they might get fuzzily matched. It's a pretty obvious and simple functionality to add.

Reminder text is treated as part of Oracle text - sometimes

This is basically a bug, and a really annoying one.

How do you search for all green flying creatures? c!g o:flying t:creature right? You wish! Instead it will also include cards with word "flying" in reminder text - as in "Reach (This creature can block creatures with flying.)" usually.

So how about adding -o:reach to exclude that? Nope, some flying creatures have reminder text of "Flying (This creature can't be blocked except by creatures with flying or reach.)".

Of course only some creatures with reach and flying have this reminder, and often there are multiple printings of the same card - some with reminder text, and some without.

Basically the only right thing is to not include reminder text in o: search ever.

It shouldn't be too hard to fix with some straightforward regexpery, since reminder text is typically parenthesised.

That was the only thing that ever made me seriously consider using Gatherer, but suffers from the same problem.

Name search includes non-English cards by default too

Here's a search for "penumbra" cards. That's a very specific mechanic (green creature which leave identical except black token when it dies) and all the cards have "penumbra" in name. Except in addition to 4 correct hits we have 5 completely spurious hits for foreign names.

There are pretty much zero cases where anybody would ever want that, especially since other functionality like o: doesn't work for non-English cards anyway. Sure, leave these foreign cards somewhere, but they shouldn't be a default.

Edition order as implemented makes no sense

90% of the time what you want is ordering cards by their edition - that's how they logically belong together, by sets, blocks, or design philosophies which change with time - and most people play Limited or Standard so they care for new cards far more than for old cards. It's bad enough that sort by name is the default.

What's even worse is how supplemental products are included in the search order. Let's ignore Modern Masters since that's a very special case, but for reprints in just about everything else like Duel Decks, Planechase, Commander, and other supplemental products nobody cares what they reprinted there.

The only sane thing here is to treat all supplemental products as older than all regular products.


I guess I should actually report these suggestions to whoever runs, but blogging first is more fun ;-p

No comments: