It is because WordPress stores HTML data along with post content, and non-executed shortcode content. There is no field that has only the 'readable' characters. MySQL (database engine) is however not capable of distinguishing HTML or shortcode text from human readable text, so the query is executed on the content field as if it was all just simple text. There is no way around this, however a possible solution is implemented in the plugin.
The index table engine allows pre-processing all the post contents, executing shortcodes, stripping any HTML etc.. and then storing all this information in a separate table to search queries. This allows better matching by weight and keyword logic across fields as well.
For more information please check:Best,
If you like my products, don't forget to rate them on codecanyon :)