Hi Ahmet, using <arr name="last-components"> or <arr name="components"> didn't make any difference. Still running into the same issues aforementioned :(
Thanks, Jia On 7/16/2014, "Ahmet Arslan" <iori...@yahoo.com> wrote: >Hi Jia, > >What happens when you use > > <arr name="last-components"> > >instead of > > <arr name="components"> > >Ahmet > > >On Wednesday, July 16, 2014 3:07 AM, "j...@ece.ubc.ca" <j...@ece.ubc.ca> wrote: > > > >Hello everyone :) > >I have a product called "xbox" indexed, and when the user search for >either "x-box" or "x box" i want the "xbox" product to be >returned. I'm new to Solr, and from reading online, I thought I need >to use WordDelimiterFilterFactory for "x-box" case, and >WordBreakSolrSpellChecker for "x box" case. Is this correct? > >(1) In my schema file, this is what I changed: ><filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" >generateNumberParts="1" catenateWords="1" catenateNumbers="1" >catenateAll="1" splitOnCaseChange="0" preserveOriginal="1"/> > >But I don't see the xbox product returned when the search term is >"x-box", so I must have missed something.... > >(2) I tried to use WordBreakSolrSpellChecker together with >DirectSolrSpellChecker as shown below, but the WordBreakSolrSpellChecker >never got used: > ><searchComponent name="wc_spellcheck" >class="solr.SpellCheckComponent"> > <str name="queryAnalyzerFieldType">wc_textSpell</str> > > <lst name="spellchecker"> > <str name="name">default</str> > <str name="field">spellCheck</str> > <str name="classname">solr.DirectSolrSpellChecker</str> > <str name="distanceMeasure">internal</str> > <float name="accuracy">0.3</float> > <int name="maxEdits">2</int> > <int name="minPrefix">1</int> > <int name="maxInspections">5</int> > <int name="minQueryLength">3</int> > <float name="maxQueryFrequency">0.01</float> > <float name="thresholdTokenFrequency">0.004</float> > </lst> ><lst name="spellchecker"> > <str name="name">wordbreak</str> > <str name="classname">solr.WordBreakSolrSpellChecker</str> > <str name="field">spellCheck</str> > <str name="combineWords">true</str> > <str name="breakWords">true</str> > <int name="maxChanges">10</int> > </lst> > </searchComponent> > > <requestHandler name="/spellcheck" >class="org.apache.solr.handler.component.SearchHandler"> > <lst name="defaults"> > <str name="df">SpellCheck</str> > <str name="spellcheck">true</str> > <str name="spellcheck.dictionary">default</str> > <str name="spellcheck.dictionary">wordbreak</str> > <str name="spellcheck.build"> true</str> > <str name="spellcheck.onlyMorePopular">false</str> > <str name="spellcheck.count">10</str> > <str name="spellcheck.collate">true</str> > <str name="spellcheck.collateExtendedResults">false</str> > </lst> > <arr name="components"> > <str>wc_spellcheck</str> > </arr> > </requestHandler> > >I tried to build the dictionary this way: >http://localhost/solr/coreName/select?spellcheck=true&spellcheck.build=true, >but the response returned is this: ><response> ><lst name="responseHeader"> ><int name="status">0</int> ><int name="QTime">0</int> ><lst name="params"> ><str name="spellcheck.build">true</str> ><str name="spellcheck">true</str> ></lst> ></lst> ><str name="command">build</str> ><result name="response" numFound="0" start="0"/> ></response> > >What's the correct way to build the dictionary? >Even though my requestHandler's name="/spellcheck", i wasn't able to >use >http://localhost/solr/coreName/spellcheck?spellcheck=true&spellcheck.build=true >.. is there something wrong with my definition above? > >(3) I also tried to use WordBreakSolrSpellChecker without the >DirectSolrSpellChecker as shown below: ><searchComponent name="wc_spellcheck" >class="solr.SpellCheckComponent"> > > <str name="queryAnalyzerFieldType">wc_textSpell</str> > <lst name="spellchecker"> > <str name="name">default</str> > <str name="classname">solr.WordBreakSolrSpellChecker</str> > <str name="field">spellCheck</str> > <str name="combineWords">true</str> > <str name="breakWords">true</str> > <int name="maxChanges">10</int> > </lst> > </searchComponent> > > <requestHandler name="/spellcheck" >class="org.apache.solr.handler.component.SearchHandler"> > <lst name="defaults"> > <str name="df">SpellCheck</str> > <str name="spellcheck">true</str> > <str name="spellcheck.dictionary">default</str> > <!--<str name="spellcheck.dictionary">wordbreak</str> --> > <str name="spellcheck.build"> true</str> > <str name="spellcheck.onlyMorePopular">false</str> > <str name="spellcheck.count">10</str> > <str name="spellcheck.collate">true</str> > <str name="spellcheck.collateExtendedResults">false</str> > </lst> > <arr name="components"> > <str>wc_spellcheck</str> > </arr> > </requestHandler> > >And still unable to see WordBreakSolrSpellChecker being called anywhere. > >Would someone kindly help me? > >Many thanks, >Jia >