ElasticSearch for that - relational databases aren’t so good at stuff like pattern matching and filtering on large numbers of fields that individually don’t reduce the search space much (ie we’d be doing a lot of full table scans, would crush us :))
I’m a bit baffled at this “pattern search” It’s totally better than nothing but it’s not what I have been taught to speak of as pattern search. Let’s say I’d like to search for an oogeima shape (same colour stones) and the oogeima would be from third line to the second line. I’d make that oogeima on the board and select a rectangle(I don’t want a full board search for an oogeima ) that just covers both stones AND the side of the board (it was important that the oogeima was from third line to the second after all) Then the search would return only the games that have exactly that formation. INCLUDING all the empty intersections that were left inside the “search rectangle”. Currently the search will return all the games that have those oogeima stones at those locations at some part of the game. It’s completely different kind of "match"
I collected some links in here.
Unfortunately the algorithms and software you link to don’t scale very well which is why we don’t use them. I’ll be looking at how to take care of empty positions though, and figure out why it’s returning fuzzy results… it’s a work in progress @Pempu
Yeah. Pattern matching is intensive thing for computers. For learning purposes the only relevant pattern search would still have to be pattern matching.
Maybe you could only allow site supporters to make those searches? You might need to have some sort of daily or weekly downtime(on the pattern search) to rebuild the database. I’m not sure how feasible it is to add games to the search database as soon as they finish.