Product Support

Combo Multi-Search

A Participants Database Add-On providing two different configurable multiple-field search capabilities.

Product Setup

The Combo Multisearch Plugin offers two main search control types: a single text input (like a search engine) or a set of selectors/checkboxes/text fields that provide a search term for each field. Both search types may be used, but in most cases, you’ll be using one or the other.

Setting up the Combination Search

Combo Search provides a single-input search that will look in multiple fields for a match to a single input. Use this search type in situations where a simple easy-to-use interface is desired to search the database.

To set up the Combo Search, you’ll need the names of all the fields you want searched with the user’s input. Type the names as a comma-separated list into the “Combination Search Fields” setting. To disable the combo search, leave the setting blank.

The “label” and “placeholder” settings give you two ways to prompt the user. The “label” is shown alongside the text input, and remains visible when the user types in their search. The “placeholder” is shown inside the text input, and disappears when the user begins to type in a search. A placeholder is good when you don’t need to explain much and want a clean, simple interface. The label is good for situations where you want to explain a little bit what the search is for. You can use either, neither, or both if you want.

Combo Search Modifiers

The “combo search modifiers” are a set of radio buttons to allow the user to set the type of search desired: “any,” “all,” or “phrase.” When enabled, these radio buttons will be shown next to the combo search input. There is a default search type that will be initially selected, and this is also the search mode that will be used if the combo search modifiers are not shown.

Autocomplete

“Autocomplete” is also known as “autosuggest” and provides the user with a list of suitable search terms. The list of suggested search terms is shown as a pop-up window when the user begins typing, and the list is pared down as the user types in more letters. The list of autosuggest words is drawn from the database, so it can reliably guide the user to search terms that will yield results. The fields that the autocomplete terms are drawn from is defined in the “Combo Search Autocomplete Fields” setting. It is a list of field names like the “combination search fields” setting. This means that the combo search can search on fields that don’t contribute to the autosuggest. This is helpful in cases where some of the fields searched contain blocks of text, which could add a lot of useless terms to the autosuggest list.

The terms that are available to the autosuggest are limited by the list shortcode filter, so data from records that are prevented from getting displayed won’t show up in the suggestion list.

Multi Search provides a comprehensive interface for searching on multiple fields using a separate input for each field. This is best for situations where a precise, complex search is needed (such as a technical database) or in situations where you want to show the viewer what kind of information they can search by (for example, a services directory).

Starting with version 2.0, the multisearch fields are defined in a special interface under the “Multi Search Fields” tab in the plugin’s settings. In this new interface, each field in the multisearch can be customized in several different ways, changing how it looks, how the user may interact with it, and how it finds matches. Which options are available to a field depends on the type of field it is as defined in Participants Database.

If you already had Combo Multisearch set up and are updating from an older version, your fields will still be configured as before, only now you can fine-tune how each field works.

shows how to interact with the multisearch fields interface
Configuring the Multi Search Fields

On this page, you configure which fields will appear in the multisearch and in what order. The display shows a list of all the fields configured for the Multi Search so you can edit the parameters of each one. You can add as many fields here as you want, you can also also delete and re-order them.

Note that fields that are included in the Combo Search configuration are not available for Multi Search; remove them from Combo Search to make them available in the “Add Field” selector.

Field Parameters

Each field in the list of fields has its own parameters where you can change how it is presented or how it works. There are several parameters, and which ones are available to each field depends on the field type. Here is a description of the parameters:

  • Label – This defaults to the normal field title, but if you want to give it a different label in the search interface, you can do that here.
  • Help Text – defaults to the field’s help text, but you can choose a different help text for the search interface.
  • Attributes – allows the addition of HTML element attributes, such as the “required” attribute to selectively make fields required in the search interface.
  • Input Type – depending on the original field type, there will be several different ways the field can be shown in the search interface.
  • Include Label in Result Summary – when checked, the field’s label will be shown along with the searched-for value in the search result summary.
  • Database Values in Selector – for any kind of selector input type, instead of showing the configured field options, the options shown in the control will be drawn from the database.
  • Show “Any” Option – for selector input types, enabling this shows an option that will match any value in the database: this is essentially a “reset” for the selector, removing it from the search. Uncheck this if you want to force the user to make a selection.
  • “Any” Option Label – when the “any” option is shown, this is how it will be labeled. You can leave it blank for a blank option.
  • Multiselect “Or” Mode – (only for multiselect input types) if this is checked, the search result can match any of the values selected, instead of needing to match all of them when using “filter” mode. This setting makes no difference when not using filter mode because the values will be treated as an “or” in that case anyway.

Multi Search Field Input Type

Some field types will have several options available for the “Input Type” selected in the Multi Search Fields interface. A text field can be shown as a text input (of course) but also as a dropdown selector that shows a list of values taken from the database entries. Dropdown fields can be shown as a dropdown or as a multiselect, giving the user the ability to select several possible matches for that field.

Normally, a list shortcode configured to show the Combo Multisearch control will show all the fields you have configured in the Multi Search Fields interface. It is possible to determine on a per-shortcode basis which fields will be shown in the interface, as explained in the “Showing the Search Control” section. If you want to do this, you must configure all the fields you will show in all shortcodes, and then use the “search_fields” attribute in the shortcode to determine which of the configured fields to show in that particular display. In other words, you cannot add a field in the shortcode that has not been added to the Multi Search Fields configuration.

Filter Search Mode

The Combo Multisearch has two general modes of operation: Filter Mode on or off. With filter mode “on,” all chosen search values must match the record’s values for it to be included in a search result. If filter mode is “off,” a record will be included in the results if any of the provided search terms matches the record’s values.

When filter mode is on, any multi search fields that are configured with the “multiselect or” option will only require that one of the selected values in that field is a match. With “multiselect or” deselected, all the options selected for that field in the search must match.

Each search type, combo or multi, has a “Whole Word Match Only” switch so that text searches will only match a complete word in the search, not portions of a word. For multi-search controls, this only affects text inputs where the user types in the search term.

Searching on Date Fields

“Date” type fields can be presented as a single input or as a range with two inputs.

When using a single input, the search will attempt to include all records that correspond to the entered date.

When using the ranged inputs, the range will always include the date entered for the end of the range. For example, if the range is entered as “June 1, 2020” through “June 10, 2020” records that have a date of June 10, 2020 will be included in the result.

Partial Dates Supported

When using “date” fields in multisearch, it’s possible for users to enter partial dates, such as just the year, a month and a year, or just a month. For example “2010” will return all results with dates within that year. Entries like “March 2010” would return all dates within the month of March 2010. It’s als possible to enter a month: an entry of “May” will return all records with dates that are within the month of May in the current year. Partial dates can be used with ranged searches also: for example a search of “2000” through “2010” will return all dates between 2000 and 2010, inclusive.

When using a ranged input, if one of the inputs is left blank, it is assumed to be the current date. You can override this behavior by adding “required” to the attributes setting for the date field in the multisearch fields configuration.

Returning to the Search Results

Under the General settings tab is an option to enable restoring the previous search when returning to the search page. This is convenient for users who need to navigate away from the search page and wish to return to the same page of results. If this is unchecked, the search page will be reset every time it is loaded.

Showing the Combo Multi-Search Control

The Combo Multisearch Add-On provides its search capabilities through the use of a special template. There is a template for the list display and for the stand-alone search display. Once the plugin settings are defined, the template must be called in the shortcode like this:

[pdb_list template=multisearch ]

The plugin now also includes a table-less responsive template for the list multisearch shortcode:

[pdb_list template=multisearch-responsive ]

Or for the standalone search like this:

[pdb_search template=multisearch ]

If you are using the pdb_search shortcode, be sure to read Using the Search Shortcode as it can be tricky to configure.

It is possible to define the list of multisearch fields to search in the shortcode, drawn from the list of fields configured in the mutisearch fields setup. For example:

[pdb_list template=multisearch search_fields='company,city,state']

If you have both combo and multi searches configured, the combo search will only show if “combo_search” is included in the field list.

If you want a particular shortcode to show the combo search only, you can set that up like this:

[pdb_list template=multisearch search_fields='combo_search']

It is not possible to determine which fields are included in the combo search in the shortcode due to search optimization.

If you need to have the search control in a different location then where the results are displayed, you can do that with the [pdb_search] shortcode. You need to use the “target_page” attribute to tell the search shortcode where the results are to be displayed. The [pdb_list] shortcode is used to display the results. (Check this page for more on using the search shortcode…) For example, if your results are displayed on a page named “listings” then your search control shortcode will be like this: [pdb_search template=multisearch target_page=listings]. That shortcode can be placed anywhere. If you want to put it into a sidebar widget, you’ll need a plugin that will allow a shortcode in a widget. Then, on the “listings” page, put [pdb_list]. There is no need to set the template to multisearch unless you want another search control to appear at the top of the results.

Target Instance

In cases where the [pdb_list] shortcode is on a page with other Participants Database shortcodes, you may need to set the “target_instance” attribute to target the specific list shortcode where you want the results to appear. To find the target instance value, you must inspect the HTML. At the top of the list display, you will see a classname in the wrapper such as “pdb-instance-2” That means the list is instance 2, and you would need to put that value as the target instance in the search control shortcode, like this: [pdb_search template=multisearch target_page=listings target_instance=2].

F.A.Q.

Can I use both the Combo Search and Multi Search at the same time?

Yes, you can, but the set of fields selected for the Combo Search Fields should be different than the fields configured in Multi Search Fields. It will still work, but the results might not be as expected because the combo search will override the multi search if both are searching on the same field.

Is it possible for the user's last used search to be restored when they return to the search page?

Yes, there is a setting under the “General” tab in the Combo Multisearch settings called “Remember the Last Search” and if checked, it will store the search parameters for the last search on the user’s browser. This means that even if they leave the site and come back later, the last search they used will still be there. If “Clear” is clicked the stored search is erased.

I want to pre-load the search terms when linking to the search page. How do I do that?

Yes, it is possible to place the search terms in the URL, and they will pre-load into the search form.

For Multi Search, each field you want to preload a search term into needs to be named and given a value. For example, you want to take the user to the search page set up to find all the brewpubs in Seattle. Your link would look something like this:

https://xnau.com/search/?city=seattle&business_type=brewpub

The “city” and “business_type” fields would then be filled with the vales in the URL. Of course, the fields named must be configured to appear in the Multi Search inputs.

You can do the same for the Combo Search, but there is only one field, named “combo_search” so if you wanted to do the same kind of thing as our example above, you could use a URL like this:

https://xnau.com/search/?combo_search=seattle%20brewpub

You’ll notice the %20 in the search term: this is code for a space, this is needed because URL’s cannot contain spaces. Take a look at this reference to learn more about using query strings in URL’s.

I want to combine Combo Multisearch with Locations Map to show search result locations in the map. How can this be done?

Right now this doesn’t work using the “auto placement” of the locations map. You can get it all working together using a custom template I’ve created a template that will do the job here:

https://gist.github.com/xnau/39afbf647d78e85a7acdba4b0da30530

You’ll need to download that template, and place it where Participants Database can find it. This is explained here:

Using Participants Database Custom Templates

Once that’s done, change your shortcode to something like this:

[pdb_list template=multisearch-map]

I've got a very large database, are there any problems with this plugin with large databases?

Mostly, the size of the database is not going to matter at all, MySQL is pretty efficient with large databases.

There is one setting that will be affected, that’s the “Autocomplete” feature of the Combo search. For a very large database, you could get some memory errors with this feature. Two things you can try for that problem: limit the number of of fields that are going into the autocomplete (using the “Combo Search Autocomplete Fields” setting) which will cut down on the number of terms loaded into the autosuggest. Second, if your database is realy, really large, you may need to turn autocomplete off altogether.

If you are concerned with database performance issues, it’s a good idea to tune your server for better performance. You may want to ask your web hosting provider about that, it is a fairly technical subject and requires server configurations you may not have access to.

Support Discussions for Combo Multisearch

  • Hi,
    My database holds records for a local fire brigade.
    One of the fields is the Brigade Name.
    One brigade name is Sorell, and another is Port Sorell.
    Doing a search for Sorell always brings up the records for Port Sorell as well as those for Sorell.
    I purchased the Combo Multi Search plugin because it looked as though it would handle this situation.
    I’ve spent a long time trying various list display and plugin options search options, but cannot get the results for just Sorell.
    Port Sorell is always shown as well.
    I’d appreciate some idea of what I’m doing wrong.
    The relevant search page is at https://tvffaf.org.au/members/

    Currently the search is set up as a multi search, with the fields “Name”, and “Brigade”.
    Thanks, Eric G.

    • If you are only searching on a single field, then you don’t need Combo Multisearch to get this. You only need to use the “Strict User Searching” setting in the Participants Database settings under the List Display tab. This will force a match between the entered text and the complete content of the field in the database.

      This functionality is not available with Combo Multisearch. If you want a refund for the premium plugin. let me know.

      • Thanks for you quick reply Roland.
        Yes, I discovered that previously.

        I need to have the strict result when I search for the brigade name.

        I also need the ability to search for a name of a member, so that a partial search brings up all the matching records.
        I was thinking that the multi plugin would allow the search for name to be
        wildcard, and the brigade name could be set to strict, but this does not appear to be the case.

        A possible workaround could be to give the option of a search for name to be wildcard, and a separate search for brigade to be strict.
        Could this be implemented somehow?

        • As it is, probably the best way to do something like this is to present the brigade search as a separate line by configuring it as a multi search field. You won’t be able to get the strict search functionality, but you can configure it to appear as a selector so the user can select the brigade from a list, avoiding the problem of the unwanted results.

          The member name would be configured as a combo search, so partial matches would also appear in the results.

          This way, the search functionality could be used to find a brigade, a member, or both.

  • Hi,
    I have an issue with translations in French.
    The translation is 100% complete in the .po file, but some rendered html are not displayed translated :
    – On front-end , everything related to “Combo Search” stays in English (Search Modifiers, results messages). Everything is OK with Multi-search labels and messages on the Front End.
    – On Back Office, nothing is translated except the “General Settings” tab title. (I don’t care if BO isn’t translated – but it’s worth to mention it).

    If I switch the site to German language, everything appear fully translated in German.

    best regards and thanks for all your great plugins !

    • Yes, thanks for letting me know about this, I’ll have to take a look to see what the issue is.

      The usual reason for missing translations is that the translation file is not complete or is not up to date. I’m not as good at keeping up with this as I should be!

      • Hi Roland,

        I found the source of the issue :
        – All the fields of pdb-combo-multisearch-fr_FR.po are filled but most of them are marked as “to be reviewed”, so the .mo files contains only a few translations.
        – After validating the fields, the generated .mo is complete and transalations are rendered.

        There is only one mistake in the french translation :
        – “Any words” and “All words” use the same translation -> “Tous les mots”.
        So only 2 Search Modifiers are displayed in french due to this duplicated translation.
        A correct translation for these fields could be :
        – “All words” : “Tous les mots”
        – “Any Words” : “N’importe lequel”

  • Good afternoon,

    I have been working on some custom styling for the Participants Database plugin that doesn’t seem to be carrying over to the Participants Database Combination Multi Search plugin. Is there a different way to approach that so that I can continue to customize the styling?

    Thank you,
    Autumn

  • Hi Roland,

    many thanks for this great plugin. There seems to be a bug in the combo-multi-search when entering a comma (or having it entered through autocomplete). The search simply freezes and never finishes. In the base search function this is not a problem.

    Best regards,
    Matthias

    • Hi Mattias,

      I’m unable to duplicate this problem here, can you go into a bit more detail about your configuration?

      Als, of course make sure you’re using the latest versions of Participants Database and Combo Multisearch.

      • I am using version 2.5.9.1 of the base plugin and 2.7.1 of the combo search.

        I am uploading the entries from a csv-file in utf-8 format. Most of the fields are text-lines with some text-areas.
        The search works just fine unless a comma happens to be inserted into the search input. I have tried it with both the multisearch-responsive template and a custom one.

        The shortcode on one of the pages would be:

        [pdb_list template=multisearch-string suppress=true search_fields="combo_search" oderby="publication_year" order="desc" sort="true" single_record_link='detailed_view']

        . It searches through a bibliographical db with entries for authors, publication year etc. Commas would appear especially in the authors field given as [last name], [first name], or in titles.

        • Commas are not normally a problem, so we need to find out the specific cause of the problem you’re seeing.

          The search freezing means that the data communication between the web page and the server could not be completed. If you can send me a link to the page, I’ll give it a look and we can go from there.

          One possibility (just guessing here) is a security configuration somewhere in your setup (plugin or in the server configuration) that considers the comma in the request to be suspicious. This is unusual, but I have seen security setups that do this, however it’s easy to change the configuration to allow it.

        • Many thanks for your help. I will have a look if I can find anything strange in the security configuration.
          The link is: https://afo.orient.univie.ac.at/en/archiv-fuer-orientforschung-afo/

        • I looked at it and there is an error occurring on the server. What you need to do to follow up on this is to use the plugin Debugging Log to see what the specific error is.

          Be sure to clear the log, test the problem, then check the log before doing anything else. This will give us a clear picture of that single action. There should be a “fatal error” of some kind, this information is needed to know what the problem is.

    • Something seems to be going really awry with the server then, since all I am getting is the usual search query as if it was working normally.

      PDb_List::_setup_iteration list query: SELECT p.id, p.author, p.editor, p.publication_year, p.title, p.publication_title, p.volume, p.pages, p.series, p.series_number FROM wp_participants_database p WHERE (p.author LIKE “%wesz,%” OR p.editor LIKE “%wesz,%” OR p.title LIKE “%wesz,%” OR p.publication_year LIKE “%wesz,%” OR p.publication_title LIKE “%wesz,%” OR p.volume LIKE “%wesz,%” OR p.series LIKE “%wesz,%” OR p.series_number LIKE “%wesz,%” OR p.tags LIKE “%wesz,%” OR p.notes LIKE “%wesz,%”) ORDER BY p.publication_year DESC
      —–
      pdbcms\Search\Control_Element::get_unique_recorded_values query: SELECT DISTINCT p.author FROM wp_participants_database p

      • OK, so the database query is correct, no errors there. What is happening is the server is throwing an error outside of the context of the plugin, so it is not showing up in the plugin debugger. The error message we need to see will be in the server’s php error log. I can’t tell you how to look at it or set it up, that is going to be specific to your server. If you’re not familiar with how to set that up, you can ask your hosting provider.

        Make sure it’s not a security setting first, though, because if it is that, that won’t show up in the php error logs in most cases.

        • I found the server error log and it is a type error:

          ”PHP Fatal error: Uncaught TypeError: preg_split(): Argument #2 ($subject) must be of type string, array given in /var/www/html/wp-content/plugins/pdb-combo-multisearch/pdbcms/Search/Submission.php:954″

          I tried setting the type with strval() inside the function which makes the search work but messes with other parts of the script. The search term is now getting forwarded as “Array” for e.g. the find count message.

        • OK, thanks, yes, don’t try to fix it, I’ll see what needs to be done.

        • You can temporarily avoid this issue by setting the Combo Multisearch “Default Search Modifier” setting to “phrase” I’m working on a fix for this problem and will release an update soon.

        • In case you didn’t see it, there is an update available to Combo Multisearch that addresses this issue.

        • Brilliant, I saw the update just now and it is working perfectly.
          Many, many thanks,
          Matthias

  • Is it possible to transform the searchfield before the search? To be more specific: searching for serial numbers: I want to remove all spaces, dashes,… and only keep letters and numbers before it searches and give me the exact match on that…

    • Yes, this is possible. The only way to change user input on the frontend is to use javascript, so the way to do this is to create a custom template for the [pdb_list] shortcode that includes some of your own javascript that makes those changes to the input. This is the best way to go because you can design the user experience to guide them to provide the correct format.

      If you don’t want to write custom javascript, there is a no-code way to do it, but it isn’t particularly graceful. You would use the “pattern” attribute to set up the format constraints, but this isn’t applied until the form is submitted. You can add a helpful comment using the “title” attribute. Here is an example:

      shows a combo multisearch field configuration

  • Can I get a website to show up as a url in the results?

    • Can you provide a bit more detail what you’re looking for here?

      It is always possible to show a URL in the results if there is a URL in a record that appears in the search results, but it sounds like you’re looking for something other than that?

  • Hi Roloand,

    is there a (german) localization for the combo-multisearch plugin? Looking at the languages folder it does not seem like it.

    How is it possible to provide an extra translation?

    Best regards
    Markus

    • There is currently no German translation for Combo Multisearch (so far, we only have English and French), but if you want to contribute one, that would be most welcome!

      It’s not difficult, you start by installing the Poedit translation app. In Poedit, there is a menu item “Create New” (don’t use the WordPress item) where you load the Combo Multisearch plugin’s translation template (languages/pdb-combo-multisearch.pot), and you can fill in the translation strings and generate the localization files. Those files go into the same location as the translation template.

      Send those files to me and I’ll include them in the plugin.

      • Thanks for the feedback. I’m on it and will provide the files when I’m done with translating.

        When working on the translation I noticed that the translation didn’t show up in the rendered HTML. The problem seem to be that a lot of translation strings have the domain

        pdb-multi-search

        , but it needs to be

        pdb-combo-multisearch

        .

        • I’ll need to look into that, it sounds like there could be a mistake in the code. Each plugin has its own domain, so all localized strings in the Combo Multisearch plugin should have the “pdb-combo-multisearch” domain.

          I will check to code to make sure it is all correct and issue an update right away if it is needed. If you see an update to Combo Multisearch, you will also need to update your translation with the updated template.

        • I issued an update to Combo Multisearch that fixes the incorrect textdomains. Thanks for noticing this!

  • Hi,

    i have purchased and installed the multi search functionality yesterday, but its thwoing up the below error…Deprecated: Constant FILTER_SANITIZE_STRING is deprecated
    Please suggest solution to this. Do I have to rollback my php versoin

    • It’s not an error, just a notice for php 8.1, you can safely ignore this. Thanks for letting me know.

Got a Support Question?

Your email address will not be published. Required fields are marked *

Would you like to be notified of followup comments via e-mail? You can also subscribe without commenting.