Webflow is using a third party search tool called SwiftType last I checked. You probably need to as well if you want control. You can restrict Webflow search to a collection(s) by excluding all other pages (each) from search indexing. That could get you close.
The issue is over all page load. Hidden items using the display property are still loaded. I had a similar requirement recently and ended up using a json file that was populated with all the data and scripting to handle type ahead searching. Algolia recently changed the pricing model making it possible to entertain its use on smaller projects.
If those cms items are not ecommerce products maybe you should try loading your search results with ajax (using the slug as a unique identifier and loading the result from the actual cms page).
This type of logic can work with webflow’s search or algolia or whatever.
You use the search and configure it to contain the link or slug of the cms item page. And this script is used to replace the content on load of the result page with an actual item you designed inside webflow on the cms item page (the parent div can be hidden).