Hi Doug, Brilliant, thanks so much for sharing. One more question… how is your request handler setup to query this?
Sorry to be a bit dense haha. —Oliver On 12 October 2011 09:48, Doug McKenzie <doug.mcken...@firebox.com> wrote: > Sure, this is the schema I used... > > <fieldType name="text_ngram" class="solr.TextField" > positionIncrementGap="100"> > <analyzer type="index"> > <tokenizer class="solr.KeywordTokenizerFactory"/> > <filter class="solr.LowerCaseFilterFactory"/> > <filter class="solr.StopFilterFactory" ignoreCase="true" > words="stopwords_en.txt" enablePositionIncrement="true"/> > <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" > side="front"/> > </analyzer> > <analyzer type="query"> > <tokenizer class="solr.KeywordTokenizerFactory"/> > <filter class="solr.LowerCaseFilterFactory"/> > <filter class="solr.StopFilterFactory" ignoreCase="true" > words="stopwords_en.txt" enablePositionIncrement="true"/> > </analyzer> > </fieldType> > > Input was CopyFielded into this field. So using your example... > > Katy Perry gets split into ... > > Ka, Kat, Katy, Katy 'space', Katy P etc > > So when a user is initially inputting their search, you can use an ajax call > to search for each part of the query and return matches. This system would > return Katy Perry if a user has just typed in 'Ka' whereas other schemas > wouldnt. > > Note that theres some assumptions here... for instance the entire phrase is > Tokenised so a search for Perry wouldnt return a match. Still found it more > effective for autosuggest than either the Suggestor options in Solr 3.4 or > using Spellchecker. > > It is worth using Spellcheck on a failed search however. > > Hope that helps > > On 12/10/2011 09:34, Oliver Beattie wrote: >> >> Hi Doug, >> >> Sounds very interesting; would you mind sharing some details of how >> exactly you did this? What request handler did you use etc? >> >> Many thanks, >> Oliver >> >> >> >> On 11 October 2011 17:37, Doug McKenzie<doug.mcken...@firebox.com> wrote: >>> >>> I've just done something similar and rather than using the Spellchecker >>> went >>> for NEdgeGramFilters instead for the suggestions. Worth looking into imo >>> >>> >>> On 11/10/2011 16:13, Oliver Beattie wrote: >>>> >>>> Hi, >>>> >>>> I'm sure this is something that's probably been covered before, and I >>>> shouldn't need to ask. But anyway. I'm trying to build an autosuggest >>>> with org.apache.solr.spelling.suggest.Suggester >>>> >>>> The content being searched is music artist names, so I need to be able >>>> to deal with suggesting things like "Katy Perry" if the user types >>>> "Katy Pe" (sorry, couldn't think of a more tasteful example off the >>>> cuff). I've tried a few things, but so far none give satisfactory >>>> results. Here's my current configuration: >>>> >>>> <fieldType name="autosuggestString" class="solr.TextField" >>>> omitNorms="true"> >>>> <analyzer type="index"> >>>> <tokenizer class="solr.KeywordTokenizerFactory"/> >>>> <filter class="solr.LowerCaseFilterFactory"/> >>>> <filter class="solr.TrimFilterFactory"/> >>>> </analyzer> >>>> </fieldType> >>>> >>>> …for which I have a copyField called suggestionArtist. In my >>>> solrconfig.xml I have: >>>> >>>> <searchComponent name="autosuggester" class="solr.SpellCheckComponent"> >>>> <lst name="spellchecker"> >>>> <str name="name">autosuggester</str> >>>> <str >>>> name="classname">org.apache.solr.spelling.suggest.Suggester</str> >>>> <str >>>> name="lookupImpl">org.apache.solr.spelling.suggest.fst.FSTLookup</str> >>>> <str name="field">suggestionArtist</str> >>>> <float name="threshold">0.0005</float> >>>> <str name="buildOnCommit">true</str> >>>> </lst> >>>> </searchComponent> >>>> <requestHandler name="/suggest" class="solr.SearchHandler"> >>>> <lst name="defaults"> >>>> <str name="spellcheck">true</str> >>>> <str name="spellcheck.dictionary">autosuggester</str> >>>> <str name="spellcheck.onlyMorePopular">false</str> >>>> <str name="spellcheck.count">5</str> >>>> <str name="spellcheck.collate">true</str> >>>> </lst> >>>> <arr name="components"> >>>> <str>autosuggester</str> >>>> </arr> >>>> </requestHandler> >>>> >>>> If anyone could give me any pointers, I'd be really grateful. >>>> >>>> —Oliver >