Right. The big difference is that the TermsComponent can't give you any suggestions that are NOT in your index. So if someone just misspells a word there's no real way to say "this term is similar" using straight TermsComponent.
Also, the TermsComponent takes a prefix. So a nonsense prefix won't suggest anything. Except I guess the "fuzzy suggester" might be a possibility here. As usual, "It Depends" (tm). Erick On Wed, Jul 31, 2013 at 9:26 AM, Timothy Potter <thelabd...@gmail.com> wrote: > Thanks for the reply Erick. I'm looking for type-ahead support; using > spell checking too via the DirectSolrSpellChecker. Seems like the > spell check based suggester is designed for type-head or am I not > understanding something? Here's my config: > > <requestHandler > class="org.apache.solr.handler.component.SearchHandler" > name="/suggest"> > <lst name="defaults"> > <str name="echoParams">explicit</str> > <str name="wt">json</str> > <str name="indent">true</str> > <str name="df">suggest</str> > <str name="spellcheck">true</str> > <str name="spellcheck.dictionary">suggestDictionary</str> > <str name="spellcheck.onlyMorePopular">true</str> > <str name="spellcheck.count">5</str> > <str name="spellcheck.collate">false</str> > </lst> > <arr name="components"> > <str>suggest</str> > </arr> > </requestHandler> > > <searchComponent class="solr.SpellCheckComponent" name="suggest"> > <lst name="spellchecker"> > <str name="name">suggestDictionary</str> > <str > name="classname">org.apache.solr.spelling.suggest.Suggester</str> > <str > name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str> > <str name="field">suggest</str> > <float name="threshold">0.</float> > <str name="buildOnCommit">true</str> > </lst> > </searchComponent> > > I was confused why this approach was needed because using terms > component is so easy and doesn't require any "build" step. From your > answer, it seems like either approach is valid in Solr 4.4 but the > spellcheck based suggester has more knobs, such as loading in an > external dictionary in addition to data in my index, etc. > > Cheers, > Tim > > > On Wed, Jul 31, 2013 at 5:08 AM, Erick Erickson <erickerick...@gmail.com> > wrote: >> The biggest thing is that the spellchecker has lots of knobs >> to tune, all the stuff in >> http://wiki.apache.org/solr/SpellCheckComponent#spellcheck.collate >> >> TermsComponent, on the other hand, just gives you >> what's in the index with essentially no knobs to tune. >> >> So it depends on your goal. Typeahead or spelling >> correction? In the first case I'd go for TermsComponent >> and the second spell check as an example. >> >> Best >> Erick >> >> On Tue, Jul 30, 2013 at 2:07 PM, Timothy Potter <thelabd...@gmail.com> wrote: >>> Going over the comments in SOLR-1316, I seemed to have lost the >>> forrest for the trees. What is the benefit of using the spellcheck >>> based suggester over something like the terms component to get >>> suggestions as the user types? >>> >>> Maybe it is faster because it builds the in-memory data structure on >>> commit? Seems like the terms component is pretty fast too. >>> >>> I'd appreciate any additional insights about this. There are so many >>> "solutions" to auto-suggest for Solr, it's hard to decide what >>> approach to take. >>> >>> Cheers, >>> Tim