AlphaKretin / ygo-data

A Node module to parse YGOPro card databases and other files into useful card data
GNU General Public License v3.0
11 stars 0 forks source link

Replace fuzzy card search algorithm #8

Open AlphaKretin opened 5 years ago

AlphaKretin commented 5 years ago

Fuse.js doesn't well fit the problem space of guessing Yu-Gi-Oh! card names. It's more suited to typoes, whereas people querying Bastion are far more likely to skip entire words. I've also experienced fuse being quite biased towards the start of the phrase, whereas an ideal algorithm should be neutral (e.g., people often search for an archetype member where the archetype name is at the start and leave that off). An option I'm considering more strongly as time goes on is to create an algorithm of my own. I'll use this issue to keep rough notes of my thoughts on how that might go.

Another option is machine learning. I know it's kind of a buzzword, but it's no more than a classification problem, and I should have a huge corpus of inputs from keeping stats on old Bastion as long as I can match them up with the real result. The main problem is massaging that data set and identifying those intended results.

AlphaKretin commented 5 years ago

I've just stumbled upon https://lunrjs.com/, which I need to investigate as an alternative to fuse.

AlphaKretin commented 5 years ago

After some investigation, it seems I misinterpreted what kind of search lunr provides, and it will not suit this use case.