Filtering repeating group based on partial words and ignoring case

I have a repeating group of Reward things and a text box I would like to use to filter the repeating group by Reward Name.

I would like the functionality of the filter to be such that a partial match will return results and be case insensitive.

I.E. A row with a Reward Name of “Pizza and Movies” should be returned by “Pizza” “pizza” “piz” or “piZ” should all return the row.

I have tried setting up conditionals in the Search that feeds the Data Source for the repeating group and options for a text column are =, contains, and contains key word(s).

= has to be an exact match - so it’s not what I am looking for.

contains will do partial matches, but is case sensitive.

contains key word(s) is case insensitive, but cannot do partial matches, it has to match the entire word.

I have done a three way merge searching with three different conditions: contains, contains:capitalized words, and contains key word(s).

This will cover almost all cases, but it seems like a mess. I am hoping someone has tackled this before with a more elegant solution. Please help.

image
image
image
image

Welcome. I’ve also been facing this challenge lately.

The best solution I have found across other threads seems to be creating another field in your database where you will store the thing you want to search against in lowercase, and then using that field in searches. It makes your database a little bigger but it’s not that much work to implement:

  1. Create new field on your datatype to store that lowercase text. I called mine “searchstring” because, even though currently it’s just the lowercase version of another text field, in the future I might decide to save more in there. See @aj11 's explanation here: Search bar that isn't capital sensitive - #10 by it16
  2. Using the App search tool, look for the uses of the field that you’re going to put in that search string (seems to be Name in your case). Specifically, look for where this field is updated and make sure your new searchstring field is also updated accordingly in those places.
  3. In App data, run a bulk operation to populate that new field. You’ll also have to do this in your live environment after deploying, if your app is already live of course.

Let me know if you find a better solution!

PS: another technique I tried before was filtering the search output as suggested in this article but that turned out to be extremely slow (for context: I have around 15k things in the table I’m querying).

Thanks demondragong, thanks for the feedback - I had settled on something similar - I added a hidden input that was dynamically set to lowercase and then I could use the advanced setting in the filter option instead of the Search option to do a lowercase to lowercase compare. Should not be a big deal as the data returned should be fairly small. It fell apart when I tried to have it filter on multiple fields, so for not it is limited to one.

Hopefully they can add this functionality into search soon.

You can do so with advanced filters. Whether you want to use them or not is a different thing

search for rewards :filtered, advanced, this reward’s name :uppercase contains input’s value :uppercase

This topic was automatically closed after 70 days. New replies are no longer allowed.