I am trying to implement synonym searching in the Examine search engine that comes with Umbraco 8 out of the box.
Does anyone have any experience with implementing synonym searching in Examine/Umbraco 8. The options that I have been considering after looking around are -
A package that can be installed in Umbraco 8 that offers this extended functionality (if one exists).
Implementing a custom index (currently just using the out of the box 'ExternalIndex') that somehow implements synonym searching in the analysis (via custom analyzer implementation etc - If that is even possible).
Manually formatting multiple search terms by checking for synonyms in the string beforehand, running all searches and consolidating the results after (really a nasty, last resort option - you don't have to tell me how bad this is, I already know).
I have been trawling around the forums for a definitive answer on this and cannot really find one. Essentially I want to stick with the Examine engine for simplicity, however I am starting to think that the best way to achieve what I am after would be to move to a new engine completely (elastic search for example).
What kind of synonyms are you hoping to search with?
Sometimes I'll add a multiple text field to documents in Umbraco to allow editors to supply 'synonyms' or other key terms that when searched for should match the particular document (and these terms are never displayed on the site, only added to Examine index and queried with a custom search filter.
If it's common variations of a search term you want to return then you could get some success using Examine's Fuzzy method:
The method takes a value between 0 and 1 for how closely a term should be matched, so a value of 0.8F is a good starting point, for matching common search terms to variations fo that word, eg Police matching Policeman...
... but that is different to true synonyms, eg matching 'fast' and 'quick'
For really complex search scenarios, I'll often now push the content from Umbraco into an Azure Search index, that has support for synonyms and faceting baked in!
Examine Search - Synonyms
Hi All,
I am trying to implement synonym searching in the Examine search engine that comes with Umbraco 8 out of the box.
Does anyone have any experience with implementing synonym searching in Examine/Umbraco 8. The options that I have been considering after looking around are -
I have been trawling around the forums for a definitive answer on this and cannot really find one. Essentially I want to stick with the Examine engine for simplicity, however I am starting to think that the best way to achieve what I am after would be to move to a new engine completely (elastic search for example).
Many thanks in advance.
Hi WombledNumber1
What kind of synonyms are you hoping to search with?
Sometimes I'll add a multiple text field to documents in Umbraco to allow editors to supply 'synonyms' or other key terms that when searched for should match the particular document (and these terms are never displayed on the site, only added to Examine index and queried with a custom search filter.
If it's common variations of a search term you want to return then you could get some success using Examine's Fuzzy method:
https://shazwazza.github.io/Examine/searching#fuzzy
The method takes a value between 0 and 1 for how closely a term should be matched, so a value of 0.8F is a good starting point, for matching common search terms to variations fo that word, eg Police matching Policeman...
... but that is different to true synonyms, eg matching 'fast' and 'quick'
Examine is a wrapper around Lucene.Net
So this article: https://www.codeproject.com/Articles/32201/Lucene-Net-Custom-Synonym-Analyzer might be useful for how this might be achievable with a custom analyzer in Examine.
For really complex search scenarios, I'll often now push the content from Umbraco into an Azure Search index, that has support for synonyms and faceting baked in!
https://docs.microsoft.com/en-us/azure/search/search-synonyms
(there's also a paid for package https://examinex.online/ that pushes Examine into azure search, so that might be a quick way of handling this)
regards
Marc
Thanks Marc - In the end the solution described on the following link that you suggested sufficed -
https://www.codeproject.com/Articles/32201/Lucene-Net-Custom-Synonym-Analyzer
is working on a reply...