Search Query Suggestions and Search
Spelling Suggestions. They are not the same!
Query Suggestions are offered while
the user types in the search box.
Spelling Suggestions are offered
only in the search results pages, after the user executes the search.
Search Suggestion:-
There are four sources for spelling suggestions:
1. The default static spelling dictionaries (static out of the box dictionaries).
2. The default dynamic spelling dictionary (dynamically generated from your content). This is also called a "content-aligned spelling dictionary".
3. The Query Spelling Inclusions term set (manually entered).
4. The Query Spelling Exclusions term set (manually entered).
1. The default static spelling dictionaries (static out of the box dictionaries).
2. The default dynamic spelling dictionary (dynamically generated from your content). This is also called a "content-aligned spelling dictionary".
3. The Query Spelling Inclusions term set (manually entered).
4. The Query Spelling Exclusions term set (manually entered).
Spelling suggestions are based on
the closest matches in the default spelling dictionaries and the Query Spelling
Inclusions list.
Only one suggestion will be
displayed. It appears that a phonic / sound alike match is being used, so the
properly spelled and misspelled words must be similar in length and pattern.
You can’t edit the default static or
dynamic spelling dictionaries.
Static
dictionaries
The static dictionary is a canned
list of words. (Something like the Word dictionaries.)
Dynamically
created dictionaries
The dynamic dictionary is created by
search as content is indexed. I.e. it's based on words commonly found in your
content.
For dynamic spelling correction to
work, you should have at least several thousand medium-sized documents. The
default settings require that a word occur in at least 1000 documents to be
included in the dictionary.
The dynamic dictionary is updated
once a night and can be a long running process. (The default timeout is 6
hours!)
Query Spelling Inclusions /
Exclusions
1. You must have a configured
Managed Metadata Service.
2. The terms must be added to the
auto-created Query Spelling Inclusions term set.
3. You manually enter a list of
words into an include or exclude list of terms.
4. You can only include single
words, not phrases in the term sets.
It may take ten minutes or more for
updates to the term sets to show up in search results. (Search
Custom Dictionaries Update timer job)
Using Power shell -
Change the threshold limit for spelling suggestion (default is
1000 as stated above)
There are two PowerShell cmdlets
that can be used to manage the on premises.
Get-SPEnterpriseSearchQuerySpellingCorrection
Set-SPEnterpriseSearchQuerySpellingCorrection
Set-SPEnterpriseSearchQuerySpellingCorrection
Note: These cmdlets are currently
only for on premises SharePoint. It looks like Office 365 is set to use the
Dynamic dictionary.
You can see the spelling suggestion
options using:
$ssa =
Get-SPEnterpriseSearchServiceApplication
Get-SPEnterpriseSearchQuerySpellingCorrection -SearchApplication $ssa
Get-SPEnterpriseSearchQuerySpellingCorrection -SearchApplication $ssa
SpellingDictionary
= Static / Dynamic
Many of the blogs state that you can
choose either Static or Dynamic as the SpellingDictionary value, and that by
selecting one of these you would exclude your manually entered Query Spelling
Inclusions .
The confusion seems to be around the
definitions of the words Static and Dynamic.
My testing shows that:
Dynamic = use the list of words found in your content, plus the
Query Spelling Inclusions term set
Static = use the static built-in / out of the box dictionary, plus the
Query Spelling Inclusions term set
As an example, I do not have
"SharePoint" or "SharePint" in my Query Spelling Inclusions
term set, but I do have "corydoras". When I do a search for
"SharePint" I get the following only when SpellingDictionary is set
to Static: (this word is in the canned dictionary)
When searching for a term in the
Query Spelling Inclusions term set like "corydoras"
I get results regardless of if
SpellingDictionary is set to Static or Dynamic.
Why don't I get any help when
SpellingDictionary is set to Dynamic and I search for "SharePint"?
Take a look at the
TermFrequencyThreshold property. Using the defaults SharePoint would need to
find at least 1000 documents that contain the word
"SharePoint".
My testing sample set of documents is not quite that big. If I change it from 1000 to 20 and run the "Spelling dictionary update" timer job then I can start to get useful results from "Did you mean?" for "SharePint". (i.e. "SharePoint" was in at least 20 of my sample documents.)
Ref:
https://technet.microsoft.com/en-in/library/jj219497.aspx
https://technet.microsoft.com/en-in/library/jj591607.aspx