0

I have a module that creates a custom content entity for staff members and a search page for the entity. The current search module uses an advanced search with fields that can use exact matches, but the default search box should allow for partial matches. I looked at the Porterstemmer module, but that appears to be designed for general text searches rather than personal names. Creating a similar module for names would require far more complexity than this search needs, as does adding the search api/solr modules. I have tried passing the keywords in with wildcards as well as using hook_search_preprocess. Is it possible to add wildcards in the condition object for this search or is there a better way to accomplish this?

Here is the relevant part of the object:

[conditions:protected] => Drupal\Core\Database\Query\Condition Object
                (
                    [conditions:protected] => Array
                        (
                            [#conjunction] => AND
                            [0] => Array
                                (
                                    [field] => d.data
                                    [value] => % username %
                                    [operator] => LIKE
                                )

                        )

                    [arguments:protected] => Array
                        (
                        )

                    [changed:protected] => 1
                    [queryPlaceholderIdentifier:protected] => 
                    [stringVersion:protected] => 
                )

Where '% username %', as the should be '% %username% %' to match "word (username1|username2|*username*) word" rather than only "word username word" in the search-dataset table. This object is in a Drupal\search\SearchQuery Object within a Drupal\Core\Database\Query\PagerSelectExtender object.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.