Plugin: smart search

Help potential buyers to find your products better and increase your sales effectively. The Intelligent Search can be used with its own algorithm depending on the language and can be optimised specifically for each sub- and language shop. The search is error-tolerant and delivers the right results, even if the search term was entered with spelling mistakes and other word combinations. In addition, similar or related search queries and results are automatically listed. Partial terms are also evaluated and an automatic weighting of the search results takes place, which can then be further filtered by manufacturer, price, category etc.

Features

  • Search by product name, keywords, manufacturer, category name
  • Automatic weighting of the search results
  • Finding of partial terms possible
  • Intelligent, error-tolerant search
  • Suggestion of similar search terms (keywords)
  • Proposal of related search results (+ number of results)
  • High performance through indexing of data and caching of search results
  • In-house development, no additional costs due to connection of third-party modules
  • In the Storefront there is a suggestion function (suggestion search)
  • Creation of synonym groups or actions (shopping worlds for the search)
  • 5 different algorithms can be used partially combined
  • Creation of profiles, between which you can change as required
  • Choose between AND and OR combination of the search terms
  • Evaluations for the search

The Intelligent Search is not compatible with Elasticsearch and therefore cannot be used. In this case, you can use the normal search or take a look at the extensive enterprise search, which is available as part of a Shopware enterprise.

General Settings

You can test and purchase the plugin directly from our store, the marketplace for all Shopware extensions. After installing the plugin you will find the configuration area for the smart search under Configuration > Intelligent Search in your backend. The default search configuration in the Basic Settings will disappear from the menu after the Intelligent Search installation has been installed.

Installation

This extension can be found in our Shopware Store, the easiest way to find a specific plugin is the search-bar. Complete the order process and login to the backend of your store. Navigate to Configuration > Plugin manager > My purchases. You need to login and click the refresh button. Your new extension is now listed and can be installed. After installing the extension go to the menu entry installed and refresh. Activate the extension. Finally delete the cache under Settings > Cache/Performance > Clear Shop Cache and refresh the backend.

Profiles

With the use of profiles, the search can be configured for each language and subshop individually. You can create different profiles to store your settings and configurations. This creates ideal conditions for every language and assortment.

Create a Profile

In the menu of the intelligent search, a new profile can be created by clicking on the Add button. Since all other search settings are saved in a profile, only the name must be entered for a new profile in the first step. After saving the mask, a new profile will be created for your search, which you can now assign to the corresponding shop.

If you want to create new settings for a profile, this must always be saved separately so that the changes are not lost when you change the profile. To do this, open the profile in the menu item Profiles by clicking on the pencil icon and save the changes again by clicking Save.

Add a New Table

In the Table configuration menu tab, you can list additional database tables that should be included in the Intelligent Search

Adding Tables

Change first to tab Table configuration and add the required table. Place the table to be considered in the field Table (eg s_categories). Save the settings below.

Add the field and relevance

Change to the tab Relevance / Fields. To include the database field (eg Attribute 4) in the search, you must add this field. The following entries must be stored here in the details:

Name: attribute4 (The field name is freely selectable)
Value: 20 (Desired relevance of the field in the search)
Table field: attr4 (attribute field in the database)
Table: s_articles_attributes

Define additional condition
In this field you can define your own condition with a where statement.
In the following screenshot you can see that in the table "s_articles_supplier" the condition "id = 2" is stored.
So this table configuration refers only to the manufacturer with the ID 2. 
In the table "s_articles_supplier" you can find out the ID of the manufacturer.

Do not split

Enable this option to save the values of this table field to the search index as specified. Otherwise, characters that are not letters, numbers or underscores will be replaced by a space.

Example: Search keywords for item order number 1234-5678-90: active: "1234-5678-90" inactive: "1234", "5678", "90

The search index must be rebuilt after a change!

Clear Cache

In order for the product properties to be included immediately in the search in the frontend, you must clear the query and search cache after creating the table and fields.

Rebuild the Search Index

When you rebuild the search index, the stored fields are searched and the terms contained in it, according to the stored algorithms, entered into the cache to speed up the search. In your backend, go to the menu item Configuration > Caches / Performance > Settings > Search and rebuild the index. Afterwards also terms from the just deposited tables can be found quickly.

Synonym groups and actions

Synonym groups and actions are shopping worlds that are found when you enter specific search terms. This allows you to pick up customers looking for a specific term directly and, for example, integrate marketing objects. So you could include coupon codes in the search that invite a customer to a quick bargain when entering a particular search term.

Add a Group

To create a new synonym group or an action, go to the menu item Synonym Groups / Actions. Here you can create a new group by clicking on Add.

Configure Groups

General Settings:

Here you can specify the Group name where you can call the group in your backend. In the shop you determine which shop should be able to call this synonym group. After that determine whether the group should already be activated or not.

Settings for the search page

Here you determine the design of the synonym group. In the Shopping World for the search page section, you can enter a shopping world that will be displayed when this group is opened via the search. This option is not mandatory, eg you can work with banners only as well. In the banner for the search page banner can be set, which may be displayed in the shopping world and the search results. For this, you can define a Link for the banner to a specific page that links internally (in your own shop) or externally to another page. In case of an internal link, you have to work with the SEO-URL, starting with the shop URL. If you want to link eg http://www.myshop.de/beach-relax/, beach-relax/ or /beach-relax/ must be entered here depending on the configuration. If you have an external link, you can simply enter the full URL. The Headline for the banner, when filled, will be displayed even if you have not deposited a banner, the same applies to the Description for the banner.

Settings for the Ajax Search

Here you define the look of the page in the proposal search. As described in the settings for the search page you can define here a banner, possibly with a link and heading and description that should be displayed to the customer as a suggestion for the entered search term, to possibly point it to the correct search page.

Synonyms

Here you determine, under which terms the just created page should be found. Here you can define further terms by clicking on Add.

Use a Group in the Frontend

You can now call up the page just created in your frontend by entering one of the terms just defined in the search.

Default Settings

The right Algorithm

You have the choice between three stored algorithms, which can be used for the search in your shop. You can then link the selected algorithm to another one.

Step 1: Select the right main algorithm

There are three algorithms available for this (1):

Soundex: Fits best with English.
Kölner Phonetik: Fits best with German.
Metaphone: Similar to Soundex, but more precise. Might be slower in certain circumstances.

Step 2: Select the correct postprocessing algorithm

Here are two algorithms to choose from (2), these define the distance between the search term and the terms in your database:

Levenstein: Calculates the Levenstein distance between two words which is defined as the minimal number of characters you have to replace, insert or delete.
SimilarText: Calculates the similarity between two words.

Step 3: AND or OR

By default, the search works with an OR logic that ensures that the search results of a query must match only one of the search terms. This results in a larger number of results, but these do not always match the overall search. If you use the AND logic at this point, fewer results will be displayed, but they will be more accurate as a result must match all search terms.

You can find this setting under Configuration > Basic Settings > Storefront > Search.

Other settings and additional relevance

Maximum distance allowed for string matching (%):

Smart search terms have a factor of 0-100, this depends on the deviation from the actual search term and is generated automatically. This setting specifies how far the search term may differ from the term to be found.

Factor for accurate hits:

This value is used to calculate the relevance. If a term is found that is evaluated as an exact match by the algorithm, the value of the relevance is multiplied by this factor according to the definition of the relevance/field setting.

Example:
Factor for accurate hits: 400
he search term "salmon" finds the product: "Fresh salmon" with the relevance: salmon (400 * 400) = 160.000

Here, an exact match for the term salmon is found in the product name. This multiplies the value of the product name (400) by the Factor for accurate hits (400). Thus, the product "Fresh salmon" gets a total relevance of 160.000

Factor for short partial hits:

This value is used to calculate the relevance. If a term is found that is evaluated by the algorithm as a short partial hit, the value of the relevance is multiplied by this factor based on the definition of the relevance/field setting.

Example: Part hit factor: 5 The search term "Lac" finds the product: "3L MI Jacket LA GRAVE" with the relevance of la (5 * 400) = 2.000

Hereby a short hit is found in the product name. This multiplies the value of the product name (400) by the Factor for short partial hits. Thus, the product "3L MI Jacket LA GRAVE" gets a total relevance of 2.000

Minimum relevance for top item (%):

This value determines the relevance of the products that are still to be considered by the search and which are not anymore. This is percentage related to the product with the highest relevance of the search.

Example: Search term: "Salmon" Value: 50 Top item "Fresh salmon" has a relevance of 170000 (Top hit + Topseller) The following item "Fresh Salmon Fillet" have a relevance of 90,000 (Short Partial Hit + Topseller) and are still displayed. The item "salmon filet" has a relevance of 80000 (fraction hits without top sellers) will no longer be displayed, since 80000 is less than 50% of 170000.

Maximum distance allowed for partial names (%):

This value defines how many percent of the entered search term must be contained in the search term found so that it is used for the search.

Example:
Maximum distance allowed for partial names (%): 30
Entered search term: salmon (5 letters) Selected search term: Smoked Salmon (12 letters) Thus, the term is 41.66% included and is considered for the search.

Search term: smoked salmon fillet (17 letters) Thus, the term is included to 29.41% and is not considered for the search.

Factor for Partial Hits:

This value is used to calculate the relevance. If a term is found that is evaluated as a partial hit by the algorithm, then the value of the relevance is multiplied by this factor based on the definition of the relevance/field setting.

Example: Part hit factor: 200 The search term "Salmon" finds the product: "Fresh salmonfillet" with the relevance: salmonfillet (200 * 400) = 80000

Here, a partial hit for the term salmon is found in the item name. This multiplies the value of the product name (400) by the factor for fractional hits (200). Thus, the product "Fresh salmon fillet" gets a total relevance of 80000

Number of max. similar results are shown in the frontend and used keywords for the search:

This determines how many different keywords will be used for the search.

Example: Value on: 8 Search term: Salmon It is additionally searched for: smoked salmon, salmon fillet, la, leek, lady, lava

Value on: 2 Search term: Salmon It is also searched for: smoked salmon, salmon fillet

Relevance to top seller Products:

In the case of a top seller product, the added relevance of the value entered here is added to the total relevance.

Relevance for new Products:

If a new product is found, then the added relevance of the value entered here is added to the overall relevance.

Preview

In the tab Preview you can enter search terms in the search bar and check if you get the desired results. This function can also be used to check the factors and relevance entered in the tab Basic settings against the results displayed. Debugging with the preview is explained in more detail in our article on debugging the search.

Analyses

In the area Marketing > Analysis > Analysis you will find a new point where the entered search terms without result including the searches within a defined period and the searches as a whole are saved. This way you can see how many times a certain term was searched for in total and additionally the number of searches within the defined period. If you filter for certain periods of time in which certain search terms were not searched at all (i.e. searched in period = 0), they will not be listed at all.

Was this article helpful?