This can easily be created by surrounding your listview with a dataview that you populate with a so-called ‘helper’ entity, which you create before entering the page, or in a datasource microflow populating said dataview. You can link the items in the listview to your ‘search object’ and show them over association. The entity is called 'helper' because it has no real place in your logical domain model, but only exists for a technical reason
You can add attributes to this helper entity like ‘searchColumn’ which would be an enum with the selectable values, as well as a second attribute called ‘searchValue’, both of which you can style/display as search fields. In the custom Search button you can use these entered values to retrieve relevant items, which you then connect to your entity and display in your list. And voila: custom search!