Hi,

Maybe you are doing query-time synonym expansion?
Try changing that to do index-time synonym expansion.

See 
http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory


Otis
----
Sematext :: http://sematext.com/ :: Solr - Lucene - Nutch
Lucene ecosystem search :: http://search-lucene.com/



----- Original Message ----
> From: Pla Gong <pg...@marketlive.com>
> To: solr-user@lucene.apache.org
> Sent: Fri, April 22, 2011 3:58:26 AM
> Subject: Multi-word Solr Synonym issue
> 
> I am trying to do a simple mapping of a 2 word term to a 1 word term and
> it  does not work. See my configuration at the bottom of the email. My
> scenario  is that I have a term called "pond care" and I want to map it
> to the term  "fountain".  So whenever a user enters the term "pond care"
> in the  search box, I want Solr to search on the word "fountain".
> Searching on   "fountain" or "pond food" should returns the same number
> of products.  I  try all type of filter combination and cannot get it to
> work.  I use the  Solr analysis and "pond food" does map to "fountain"
> but when test on Solr  Admin, the search would not query on "fountain"
> but only on "pond  care".  Here is my log from solr Admin search:
> 
> - <lst  name="debug">
> - <lst name="queryBoosting">
>   <str  name="q">fountain</str> 
>   <null name="match" /> 
>   </lst>
>   <str name="rawquerystring">pond  food</str> 
>   <str name="querystring">pond food</str> 
>   <str name="parsedquery">+text:pond +text:food</str> 
>   <str name="parsedquery_toString">+text:pond  +text:food</str> 
> - <lst name="explain">
>   <str  name="catalogItem.155.120.1">1.4865229 = (MATCH) sum of:
> 0.5013988 =  (MATCH) weight(text:pond in 1137), product of: 0.5317582  =
> queryWeight(text:pond), product of: 3.180518 =  idf(docFreq=730,
> maxDocs=6470) 0.16719232 = queryNorm 
> 
> I am new to  Solr and I have Google the issue but I did not find a
> solution that will work  for my case.  Please let me know if you  have
> encounter this issue  and how you resolved it and what configuration you
> used.  I want term to  term mapping results from the query and not a
> combination of the two  terms.
> 
> I would greatly appreciate any  help.
> 
> Thanks,
> Pla
> 
> -----------field type and filter  Configuration
> 
>     <fieldType name="text"  class="solr.TextField"
> positionIncrementGap="100">
>        <analyzer type="index">
>         <tokenizer  class="solr.WhitespaceTokenizerFactory"/>
>          <filter class="solr.StopFilterFactory"
>                  ignoreCase="true"
>                  words="stopwords.txt"
>                  enablePositionIncrements="true"
>                  />
>          <filter class="solr.WordDelimiterFilterFactory"
> generateWordParts="1"  generateNumberParts="1" catenateWords="1"
> catenateNumbers="1" catenateAll="0"  splitOnCaseChange="1"/>
>         <filter  class="solr.LowerCaseFilterFactory"/>
>          <filter class="solr.SnowballPorterFilterFactory"
> language="English"  protected="protwords.txt"/>
>        </analyzer>
>       <analyzer  type="query">
>         <tokenizer  class="solr.KeywordTokenizerFactory"/>
>          <filter class="solr.SynonymFilterFactory"
> synonyms="synonyms.txt"  ignoreCase="true" expand="true"/>
>         <filter  class="solr.StopFilterFactory"
>                  ignoreCase="true"
>                  words="stopwords.txt"
>                  enablePositionIncrements="true"
>                  />
>         <filter  class="solr.WordDelimiterFilterFactory"
> generateWordParts="1"  generateNumberParts="1" catenateWords="0"
> catenateNumbers="0" catenateAll="0"  splitOnCaseChange="1"/>
>         <filter  class="solr.LowerCaseFilterFactory"/>
>          <filter class="solr.SnowballPorterFilterFactory"
> language="English"  protected="protwords.txt"/>
>        </analyzer>
>     </fieldType>
> 

Reply via email to