This helps a lot for understanding why it’s not explicitly documented. Do you happen to know if it is not an option to filterByFormula on linked record fields and/or lookup fields?
If I run a plain text Search on a regular field, I can get a result as expected. However, I cannot on linked records or lookup fields.
Given this filter, I’d expect this to work as you mentioned

const getCaseHowYouCanHelpTest = async (slug) => {
const records = await caseHowYouCanHelpTable
.select({
filterByFormula: `SEARCH("${slug}",{lookupCaseSlug})`,
})
.all();
return minifyHowYouCanHelpRecords(records);
};
But logging it with console.log(slug, test); results in brandon-lawson []
Linked record fields should work because Airtable auto-converts the contents to a comma-separated string when read by a formula. However, lookup fields need some extra attention. Even when the related linked record field is only targeting a single record, lookup fields most often return arrays, not single values. The SEARCH() function requires single strings as arguments, so comparing against a lookup field’s array isn’t going to work. Thankfully the fix is easy: concatenate the field contents with an empty string, which force-converts the output to be a string. That would turn your code into this:
const getCaseHowYouCanHelpTest = async (slug) => {
const records = await caseHowYouCanHelpTable
.select({
filterByFormula: `SEARCH("${slug}",{lookupCaseSlug} & "")`,
})
.all();
return minifyHowYouCanHelpRecords(records);
};
I created a base to help demystify the output of lookup fields in various situations: