If you search Serajudin Haqqani you get a score of 87 for a match with Sirajuddin HAQQANI:
How does Jgram arrive at that score?
The search term "Serajudin Haqqani" is being decomposed into the following set of 33 tokens:
['s', 'se', 'e', 'er', 'r', 'ra', 'a', 'aj', 'j', 'ju', 'u', 'ud', 'd', 'di', 'i', 'in', 'n', 'n ', ' ', ' h', 'h', 'ha', 'a', 'aq', 'q', 'qq', 'q', 'qa', 'a', 'an', 'n', 'ni', 'i']
This is matching with "Sirajuddin HAQANI" which is decomposed into the following set of 33 tokens: ['s', 'si', 'i', 'ir', 'r', 'ra', 'a', 'aj', 'j', 'ju', 'u', 'ud', 'd', 'dd', 'd', 'di', 'i', 'in', 'n', 'n ', ' ', ' h', 'h', 'ha', 'a', 'aq', 'q', 'qa', 'a', 'an', 'n', 'ni', 'i']
The green tokens are the ones in the query that are found in the matching name of which there are 29 giving a score of 29 / 33 * 100 = 87
You may be wondering why you don't get a better match against "Sirajuddin HAQQANI" which decomposes into the following 35 tokens: ['s', 'si', 'i', 'ir', 'r', 'ra', 'a', 'aj', 'j', 'ju', 'u', 'ud', 'd', 'dd', 'd', 'di', 'i', 'in', 'n', 'n ', ' ', ' h', 'h', 'ha', 'a', 'aq', 'q', 'qq', 'q', 'qa', 'a', 'an', 'n', 'ni', 'i'] In this case 30 of your tokens are found in the match but it's out of 35 giving a score of 30 / 35 * 100 = 85% which is lower.
Significant additional work goes into search and scoring, but at a high level, that is how Jgram arrives at number. Jgram is designed to have scores drop off sharply for names that are not similar, with the goal of highlighting close matches and reducing false positives.