Configure "Long-Tail" Search
This section describes the Long-Tail Search feature, that will allow you to have correct search results for words that contain dashes or other non-alphabetic symbols. You can also replace on-the fly the most typical errors customers can make in complex product names.
- What is Long-Tail Search?
- Configuring Long-Tail Expressions
- Examples of Long-Tail Expressions
- Moving Long-Tail Expressions from M1 to M2
What is Long-Tail Search?
For example, we have a product Canon PowerShot SX500 IS
. But customer can request Canon PowerShot SX-500IS
, which default search will not find, because it differs from actual product label.
It's because Magento by default during reindex uses only correct product labels from database, and thus, index will contain only them - making products with complex names "ineligible" for search.
This is where "Long-tail" search come. During reindex and search this feature recognizes the keywords rather by pattern and replaces it either to the empty or some other characters, "correcting" customer's request on-the fly.
In example above the SX500 IS
can be converted to the SX500IS
and during the search, the SX-500IS
also be converted to the SX500IS
by replacing '-' symbol to empty char.
This way search will be able to find products by several combinations of spelling the product's name.
Also, please learn more about configuring Long-Tail Search for your store in our Blog article.
Configuring Long-Tail Search
Go to System / Search Management / Settings / Mirasvit Extensions / Search
In the section Search Settings go to the option Long tail.
There you can set up regular expressions to receive required search results.
-
Match Expression - the regular expression(s) that parses words for further replacing.
Parsing goes for search index, during an indexing process, and goes for search phrases during search. E.g.
/([a-zA-Z0-9]*[\-\/][a-zA-Z0-9]*[\-\/]*[a-zA-Z0-9]*)/
- Replace Expression - the regular expression(s) to parse characters to be replaced. Parsing goes in the results of "Match Expression". E.g.
/[\-\/]/
- Replace Char - the character to replace values founded by "Replace Expression". E.g.
empty value
.
Configuring Long-Tail Search
Here is some of most useful cases of long-tail search, implemented as corresponding rules.
-
Automatically remove '-' symbol from product names
Create a rule with the following parameters:
- Match Expression -
/[a-zA-Z0-9]*-[a-zA-Z0-9]*/
Matched text:SX500-123
,GLX-11A
,GLZX-VXV
,GLZ/123
,GLZV 123
,CNC-PWR1
- Replace Expression -
/-/
- Replace Char - empty
Result text:SX500123, GLX11A
,GLZXVXV
,GLZ/123
,GLZV-123-123
,CNCPWR1
- Match Expression -
-
Automatically remove '-' and '/' symbols from product names
Create a rule with the following parameters:
- Match Expression -
/[a-zA-Z0-9]*[ \-\/][a-zA-Z0-9]*/
Matched text:SX500-123
,GLX-11A
,GLZX-VXV
,GLZ/123
,GLZV 123
,CNC-PWR1
- Replace Expression -
/[ \-\/]/
- Replace Char - empty
Result text:SX500123
,GLX11A
,GLZXVXV
,GLZ123
,GLZV123
,CNCPWR1
- Match Expression -
-
Automatically make solid all products names with separators
Create a rule with the following parameters:
- Match Expression -
/[a-zA-Z0-9]*[-\/][a-zA-Z0-9]*([-\/][a-zA-Z0-9]*)?/
Matched text:SX500-123
,GLX-11A
,GLZX-VXV
,GLZ/123
,GLZV-123-123
,CNC-PWR1
- Replace Expression -
/[-\/]/
- Replace Char - empty
Result text:SX500123
,GLX11A
,GLZXVXV
,GLZ123
,GLZV123123
,CNCPWR1
- Match Expression -
-
Automatically fix misspelled product's name
Create a rule with the following parameters:
- Match Expression -
/([a-zA-Z0-9]*[\- ][a-zA-Z0-9]*[\-][a-zA-Z0-9]*)/
Matched text:VHC68B-80
,VHC-68B-80
,VHC68B80
- Replace Expression -
/[\- ]/
- Replace Char - empty
Result text:VHC68B80
- Match Expression -
Moving Long-Tail Expressions from M1 to M2
Long-Tail expressions, which are used in Search Sphinx for M1 and M2 sliightly differ.
In M1 Search Sphinx you can enter one or more expressions to match, separated by '|' character. In M2 you can not.
Consider the following expression for Search Sphinx for M1:
Example
Match Expression:/[a-zA-Z0-9][ -/][a-zA-Z0-9]([ -/][a-zA-Z0-9]*)?/|/[a-zA-Z]{1,3}[0-9]{1,3}/
Replace Expression:
/[ -/]/|/([a-zA-Z]{1,3})([0-9]{1,3})/
Replace Char:
$1 $2
It actually contains two separate regexps to match: /[a-zA-Z0-9][ -/][a-zA-Z0-9]([ -/][a-zA-Z0-9]*)?/
and /[a-zA-Z]{1,3}[0-9]{1,3}/
with respective separate expressions for replace.
You need either to reformat that expression, so it will match in single expression, or rewrite this rule as a set of two:
-
First rule
This rule will implement the first part of original M1 expression.
- Match Expression:
/[a-zA-Z0-9][ -/][a-zA-Z0-9]([ -/][a-zA-Z0-9]*)?/
- Replace Expression:
/[ -/]/
- Replace Char:
$1 $2
- Match Expression:
-
Second rule
This rule will implement the second part of original M1 expression.
- Match Expression:
/[a-zA-Z]{1,3}[0-9]{1,3}/
- Replace Expression:
/([a-zA-Z]{1,3})([0-9]{1,3})/
- Replace Char:
$1 $2
- Match Expression: