Yes, you can perform a case-insensitive partial match. Specifically, you can use toLowerCase() on both the property (prop) and the filter string (filterLowerCase), and then checking if the property contains the filter string using contains().
propertiesToSearch.stream().anyMatch(prop -> prop.toLowerCase().contains(filterLowerCase))
|| listPropertiesToSearch.stream()
.flatMap(List::stream)
.anyMatch(item -> item.toLowerCase().contains(filterLowerCase));
So this will return true if there is any property in propertiesToSearch (that's the card properties) or any item in the flattened listPropertiesToSearch that contains the specified filterLowerCase as a substring in a case-insensitive manner.
So, if the user inputs "bar," it should match properties like "low bar" and "high bar" in both propertiesToSearch and listPropertiesToSearch.