✅
Demo to preview the settings
Introduction
The Fuzzy Search Pro plugin is a powerful search enhancement tool for Bubble applications that provides advanced fuzzy matching capabilities with typo tolerance, sensitivity control, and real-time performance. This plugin enables developers to implement sophisticated search functionality that can handle misspellings, variations in input, and complex multi-field queries while maintaining high performance.
Key capabilities include fuzzy matching with adjustable sensitivity, multi-input field searching, real-time sorting and filtering, result highlighting, compatibility with repeating groups, asynchronous operation for optimal performance, server-side search functionality, and support for various data sources including Bubble DB, Airtable, and geographic data.
Prerequisites
No external API keys or third-party accounts are required for basic functionality. The plugin uses the Fuse.js library for fuzzy search capabilities, which is automatically included. For advanced features like Airtable integration, you may need appropriate data source configurations in your Bubble application.
❗
Please be aware that the plugin works correctly only with the Input element and is not suitable for the search box element.
How to setup
Setting up the Fuzzy Search Pro plugin involves configuring the search elements and connecting them to your data sources:
- Add Search Element: Drag the "Search Pro" element to your page from the visual elements section
- Configure Data Source: Set the Data Type and Data Source fields to connect to your Bubble database or external data
- Set Search Fields: Configure up to 5 text fields and 1 address field that you want to search through
- Configure Input Method: Choose between direct text input or connecting to an input box with a specific ID
- Adjust Search Parameters: Set threshold, case sensitivity, and other advanced options based on your needs
- Set Up Input Box (Optional): If using input box integration, create an input element and set its ID attribute
- Configure RG:Place the Repeating Group and set the data source of the info it's being search for.
- Configure Events: Set up workflows to respond to search results and input changes
For Airtable integration, use the "Airtable Search Pro" element and configure the field mappings according to your Airtable structure.
- Install the Airtable plugin in your application and enter the Personal Access Token.
- Select and initialize the required database.
Plugin element "Search Pro"
Fields
Title | Description | Type |
Data Type | The type of data that will be searched for. | App Type |
Data Source | Data Type list by which the search will be carried out. | List |
Field To Search 1 | Where to find the data field. | Field of Data Type |
Field To Search 2 | Where to find the data field. | Field of Data Type |
Field To Search 3 | Where to find the data field. | Field of Data Type |
Field To Search 4 | Where to find the data field. | Field of Data Type |
Field To Search 5 | Where to find the data field. | Field of Data Type |
Text To Match | The string by which the search will be carried out. | Text |
OR Set Text to Match from an Input Box | Use input value as the search string. | yes/no |
Input Box ID | Input ID. | Text |
Threshold | At what point does the matching algorithm give up. A threshold of 0.0 requires a perfect match (of both letters and location), a threshold of 1.0 would match anything. | Number |
Case Sensitive | Case Sensitive search. | yes/no |
Find All Matches | When true, the matching function will continue to the end of a search pattern even if a perfect match has already been located in the string. | yes/no |
Location | Determines approximately wherein the text is the pattern expected to be found. | Number |
Distance | Determines how close the match must be to the fuzzy location (specified by location). An exact letter match which is distance characters away from the fuzzy location would score as a complete mismatch. A distance of 0 requires the match to be at the exact location specified, a distance of 1000 would require a perfect match to be within 800 characters of the location to be found using a threshold of 0.8. | Number |
Exclude Terms Shorter Than | Exclude Terms Shorter Than - Number - Exclude all search words shorter than this value. | Number |
Extended Search | This form of advanced searching allows you to fine-tune results. Extended Search | yes/no |
Sort field | The field by which the result is sorted. | Field of Data Type |
Sorting options | Sorting options (Default (best match), Increasing, Decreasing) | Text |
Search suggestions | A block of search suggestions under the input. | yes/no |
Suggestion field | Set the search field whose values you want to get in the suggestions block. | Field of Data Type |
Highlight color | The highlight color of the selected search suggestion | color |
Background color | The color of the element with search suggestions | color |
States:
Title | Description | Type |
Matches | List of matched things | List of Data Type |
Match Scores | Match scores from 0 to 1. 0 is a perfect match | List of numbers |
hintInput Box's Value | Value of input box from ID | text |
Selected suggestion | The result of matches when using search suggestions
*Only with option "Search suggestions" enabled. | List of Data Type |
Events:
Name | Description |
Changing the Input Box value | Event that occurs when the value of the input field changes |
Data is loaded | Triggered when the data source has been loaded and processed |
Actions
Reset input
Resets the input value with the Input Box ID entered in the element and resets all states.
Add Field To Search
If all five fields of the search element are filled in, you can use this action to add another search field.
Fields:
Title | Description | Type |
Sort type | The type of data that will be searched for. | App Type |
Field To Search 1 | Where to find the data field. | Field of Data Type |
Set input value
Sets the value of the connected input box programmatically.
Title | Description | Type |
Value | The text value to set in the input box | Text |
Reset matches
Clears only the match arrays without affecting the input box value.
Refresh Matches
Refreshes the data source and performs a new search with current input.
Plugin element "Airtable Search Pro"
Fields
Title | Description | Type |
Data Type | The type of data that will be searched for. | App Type |
Data Source | Data Type list by which the search will be carried out. | List |
Field To Search 1 | Where to find the data field. | Text |
Field To Search 2 | Where to find the data field. | Text |
Field To Search 3 | Where to find the data field. | Text |
Field To Search 4 | Where to find the data field. | Text |
Field To Search 5 | Where to find the data field. | Text |
Text To Match | The string by which the search will be carried out. | Text |
OR Set Text to Match from an Input Box | Use input value as the search string. | yes/no |
Input Box ID | Input ID. | Text |
Threshold | At what point does the matching algorithm give up. A threshold of 0.0 requires a perfect match (of both letters and location), a threshold of 1.0 would match anything. | Number |
Case Sensitive | Case Sensitive search. | yes/no |
Find All Matches | When true, the matching function will continue to the end of a search pattern even if a perfect match has already been located in the string. | yes/no |
Location | Determines approximately wherein the text is the pattern expected to be found. | Number |
Distance | Determines how close the match must be to the fuzzy location (specified by location). An exact letter match which is distance characters away from the fuzzy location would score as a complete mismatch. A distance of 0 requires the match to be at the exact location specified, a distance of 1000 would require a perfect match to be within 800 characters of the location to be found using a threshold of 0.8. | Number |
Exclude Terms Shorter Than | Exclude Terms Shorter Than - Number - Exclude all search words shorter than this value. | Number |
Extended Search | This form of advanced searching allows you to fine-tune results. Extended Search | yes/no |
Run a server-side search | Use an instant search on the server with the action "Search" by passing the state of the element "Input Box's Value" to it | yes/no |
Sort field | The field by which the result is sorted. | Text |
Sorting options | Sorting options (Default (best match), Increasing, Decreasing) | Text |
States:
Title | Description | Type |
Matches | List of matched things | List of Data Type |
Match Scores | Match scores from 0 to 1. 0 is a perfect match | List of numbers |
hintInput Box's Value | Value of input box from ID | text |
Events:
Name | Description |
Changing the Input Box value | Event that occurs when the value of the input field changes |
Actions
Reset input
Resets the input value with the Input Box ID entered in the element and resets all states.
Add Field To Search
If all five fields of the search element are filled in, you can use this action to add another search field.
Fields:
Title | Description | Type |
Sort type | The type of data that will be searched for. | App Type |
Field To Search 1 | Where to find the data field. | Field of Data Type |
Plugin action "Server Side Search"
Fields
Title | Description | Type |
Data Type | The type of data that will be searched for. | App Type |
Data Source | Data Type list by which the search will be carried out. | List |
Field To Search 1 | Where to find the data field. | Text |
Field To Search 2 | Where to find the data field. | Text |
Field To Search 3 | Where to find the data field. | Text |
Field To Search 4 | Where to find the data field. | Text |
Field To Search 5 | Where to find the data field. | Text |
Search Input | The string by which the search will be carried out. | Text |
Threshold | At what point does the matching algorithm give up. A threshold of 0.0 requires a perfect match (of both letters and location), a threshold of 1.0 would match anything. | Number |
Case Sensitive | Case Sensitive search. | yes/no |
Find All Matches | When true, the matching function will continue to the end of a search pattern even if a perfect match has already been located in the string. | yes/no |
Location | Determines approximately wherein the text is the pattern expected to be found. | Number |
Distance | Determines how close the match must be to the fuzzy location (specified by location). An exact letter match which is distance characters away from the fuzzy location would score as a complete mismatch. A distance of 0 requires the match to be at the exact location specified, a distance of 1000 would require a perfect match to be within 800 characters of the location to be found using a threshold of 0.8. | Number |
Exclude Terms Shorter Than | Exclude Terms Shorter Than - Number - Exclude all search words shorter than this value. | Number |
Extended Search | This form of advanced searching allows you to fine-tune results. Extended Search | yes/no |
Sort field | The field by which the result is sorted. | Field of Data Type |
Sorting options | Sorting options (Default (best match), Increasing, Decreasing) | Text |
Return Values
Title | Description | Type |
Matches | List of matched things | List of Data Type |
Match Scores | Match scores from 0 to 1. 0 is a perfect match | List of numbers |
Error Data Source | Error Data Source | text |
Workflow example
Here are some basic workflow examples to get you started with the Fuzzy Search Pro plugin:
Basic Search Setup
- Add a "Search Pro" element to your page
- Set the Data Type to your database table (e.g., "Products") or a simple data type.
- Set Data Source to "Do a search for Products". You can also use a regular list of text rather than a Bubble database object as the plugin's data source.
- Configure Field To Search 1 as the main searchable field (e.g., "name")
- Set "Text To Match" to an input's value or enable input box integration
- Use the "Matches" state in a repeating group to display results
Real-time Input Box Search
- Create an input element and set its ID attribute to "SearchInput"
- Configure the Search Pro element with "OR Set Text to Match from an Input Box" checked
- Set "Input Box ID" to "SearchInput"
- The search will automatically trigger as users type
- Display results using the "Matches" state in a repeating group
Advanced Multi-field Search
- Configure multiple "Field To Search" properties for comprehensive searching
- Adjust the threshold value (0.3-0.7 for balanced results)
- Options "
location" and "distance”. locationdefaults to0distancedefaults to100thresholddefaults to0.6
The calculation for something to be considered a match (whether fuzzy or exact) takes into account how far the pattern is from the expected location, within a threshold.
To illustrate, consider the following options:
With the above options, for something to be considered a match, it would have to be within (threshold)
0.6 x (distance) 100 = 60 characters away from the expected location 0. For example, consider the string
"Fuse.js is a powerful, lightweight fuzzy-search library, with zero dependencies". Searching for the pattern "zero" would not match anything, even though it occurs in the string. The reason is that with the above defaults, for it to be considered a match it would have to be within 60 characters away from the expected location 0. However, "zero" appears at index 62.- Enable "Extended Search" for advanced query syntax
This form of advanced searching allows you to fine-tune results.
White space acts as an AND operator, while a single pipe (
|) character acts as an OR operator. To escape white space, use double quote ex. ="scheme language" for exact match.Token | Match type | Description |
jscript | fuzzy-match | Items that fuzzy match jscript |
=scheme | exact-match | Items that are scheme |
'python | include-match | Items that include python |
!ruby | inverse-exact-match | Items that do not include ruby |
^java | prefix-exact-match | Items that start with java |
!^earlang | inverse-prefix-exact-match | Items that do not start with earlang |
.js$ | suffix-exact-match | Items that end with .js |
!.go$ | inverse-suffix-exact-match | Items that do not end with .go |
White space acts as an AND operator, while a single pipe (
|) character acts as an OR operator.- Use sorting options to organize results by relevance or custom fields
Changelogs
Update 01.12.25 - Version 1.28.0
- Bubble Plugin Page Update (Description).
Update 31.10.25 - Version 1.27.0
- Bubble Plugin Page Update (Description).
Update 28.10.25 - Version 1.26.0
- Bubble Plugin Page Update (Logo).
Update 28.10.25 - Version 1.25.0
- Bubble Plugin Page Update (Logo).
Update 12.09.25 - Version 1.24.0
- added support for the simple 'text' data type.
Update 16.07.25 - Version 1.23.0
- Bubble Plugin Page Update (Logo).
Update 13.06.25 - Version 1.22.0
- Marketing update (minor change).
Update 17.12.24 - Version 1.21.0
- Fixed position suggestions on the page.
Update 16.12.24 - Version 1.20.0
- Minor update(Marketing update).
Update 20.11.24 - Version 1.19.0
- Fixed database reloading, added "Data is loaded" event.
Update 24.10.24 - Version 1.18.0
- Minor update (Marketing update).
Update 18.10.24 - Version 1.17.0
- Minor update (Marketing update).
Update 27.09.24 - Version 1.16.0
- Updated sorting functionality.
Update 19.07.24 - Version 1.15.0
- Minor update.
Update 17.07.24 - Version 1.14.0
- Minor update (Marketing update).
Update 11.06.24 - Version 1.13.0
- Updated demo/service links.
Update 06.06.24 - Version 1.12.0
- Minor update.
Update 30.04.24 - Version 1.11.0
- added action 'Refresh Matches'.
Update 04.04.24 - Version 1.10.0
- updated description.
Update 24.01.24 - Version 1.9.0
- updated description.
Update 19.01.24 - Version 1.8.0
- Added 'Background color' field.
Update 16.01.24 - Version 1.7.0
- Added functionality for search suggestions.
Update 27.12.23 - Version 1.6.0
- updated description.
Update 18.10.23 - Version 1.5.0
- Updated description.
Update 11.10.23 - Version 1.4.0
- updated description.
Update 15.09.23 - Version 1.3.0
- updated description.
Update 08.09.23 - Version 1.2.0
- minor update.
Update 08.09.23 - Version 1.1.0
- obfuscation.
Update 05.09.23 - Version 1.0.0
- Initial Release.