Thank you very much for the proper details, it helped me a lot!
The problem was actually how the weight options were set. Since the title weight was 100, and the content was 20, there was a far bigger chance for the matches in the content to outweight the matches in the titles – since you have fairly long contents, and some important keywords repeat over 5-10 times.
I have changed them as following (about 10 times smaller for each, except the title), I feel like this is very close to what you need:
Title weight: 200 Content weight: 2 Excerpt weight: 1 Terms weight: 7 Custom fields weight: 7 Author weight: 1
The reason is, that the index table calculates the word occurrences as well. Since there are a lot of possible matches in the content, having a far higher title match chance is going to help to maintain dominant title matches at all times. You can of course experiment with these, but I highly recommend having the title weight at least 50 times higher as the content weight in your case.
In case of the reverse term match, the first keyword is always calculated with a bit higher relevance. The configuration above will reduce it’s effect, as it will mostly affect the title matches only.
I have also changed the keyword logic as this: https://i.imgur.com/o5UiUrY.png
I highly recommend leaving the primary logic as ‘AND with exact word matches’, the secondary can be an OR type of logic, if you like.
You should get much more relevant results now, at least closer to your excpectations.Best,
If you like my products, don't forget to rate them on codecanyon :)