HCL Commerce Version 9.1.15.0 or later

Addressing search misses due to search dropping

In cases where a search query doesn't yield the expected results (commonly referred to as "Search Misses"), the system takes proactive measures to enhance your search experience.

Term dropping, a key strategy in this process, is applied based on the configured term dropping priority. When term dropping occurs, a new query is executed, refining the search term to increase the likelihood of finding relevant products. This term dropping, combined with search term breakdown, is reflected in the response JSON data as part of metaData under searchExecution.

Identifying Term Dropping in SearchExecution

Each time a term dropping operation is executed, a new node is added under searchExecution. This node includes all the search term breakdown information. As a result, the presence of multiple nodes within the searchExecution list signifies the iterations and adaptations made to the search term after each term dropping operation.

The following is an example of term dropping in the searchExecution section of the response JSON:
{
    "metaData": {
        ...
        "searchExecution": [
            {
                "searchTerm": "red dress",
                "searchRule": {},
                "nlp": {
                    "pos": "ADJECTIVE --> [red]",
                    "ner": "CATEGORY --> [dress~dresses] (boosted by 100.0)",
                    "color": "COLOR --> [red]"
                },
                "customFields": {}
            },
            {
                "searchTerm": "dress",
                "searchRule": {},
                "nlp": {
                    "ner": "CATEGORY --> [dress~dresses] (boosted by 100.0)"
                },
                "customFields": {}
            }
        ]
    },
    ...

In this example, the search term red dress initially contains two components, COLOR --> [red] and CATEGORY --> [dress~dresses]. However, the term dropping process identifies that "red" is a color with higher priority than the category "dress." Consequently, "red" is dropped first, resulting in a refined search term of "dress".

Note: Priorities are given in inverse numerical order. In this case, a priority value of 4 (representing 'COLOR') is higher in priority than a value of 6 (representing 'CATEGORY').
"termDroppingPriority": {
    "1": "FILTER",
    "2": "MEASUREMENT",
    "3": "BRAND",
    "4": "COLOR",
    "5": "ADJECTIVE",
    "6": "CATEGORY",
    "7": "NOUN"
}

Disabling term dropping

To disable term dropping and return no results in case of search misses, customize your NLP profile. Configure the termDroppingPriority node in the NLP profile configuration as follows:
  1. Open your NLP profile configuration file. This can be the default profile or any custom profile you are using.
  2. Locate the termDroppingPriority node.
  3. Set termDroppingPriority to an empty value.
    "termDroppingPriority": {}

By setting termDroppingPriority to an empty value, you indicate that no specific term dropping priority is defined. This results in the disabling of term dropping for search misses. No results are returned when a search term does not match any products.