I think I understand what you want.
The keyword logic is set to “AND with exact keyword matches” on the General Options -> Behavior panel.
In that case the “port stephens seafood” will not match Port Stephens as category and Seafood as tag – because they are two separate objects, treated separately in the database. In other words they are compared to the “port stephens seafood” phrase individually in the database, but because of the strict logic, they won't match.
There are however multiple solutions:
1. Keeping the current logic, and using the index table engine
The index table is a separated database table, which you can configure and generate. It basically makes a “word cloud” from posts and all related and selected fields into one object. It takes time to get it right, but it will give you extremely relevant results – as word occurence is also calculated. It's heavily optimized, and very resource friendly.
– Index table engine in documentation
– Searching in categories/terms using Regular or Index table engine
2. Changing the keyword logic to “OR” or “OR with exact keyword matches”. This will give you a wider set of results, but in exchange they are a bit less relevant.Best,
If you like my products, don't forget to rate them on codecanyon :)