You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by jazzy <ja...@hotmail.com> on 2013/09/18 01:02:29 UTC

Solr SpellCheckComponent only shows results with certain fields

I'm trying to get the Solr SpellCheckComponent working but am running into
some issues. When I run
.../solr/collection1/select?q=%3A&wt=json&indent=true

These results are returned

{
  "responseHeader": {
    "status": 0,
    "QTime": 1,
    "params": {
      "indent": "true",
      "q": "*:*",
      "_": "1379457032534",
      "wt": "json"
    }
  },
  "response": {
    "numFound": 2,
    "start": 0,
    "docs": [
      {
        "enterprise_name": "because",
        "name": "doc1",
        "enterprise_id": "100",
        "_version_": 1446463888248799200
      },
      {
        "enterprise_name": "what",
        "name": "RZTEST",
        "enterprise_id": "102",
        "_version_": 1446464432735518700
      }
    ]
  }
}
Those are the values that I have indexed. Now when I want to query for
spelling I get some weird results.

When I run
.../solr/collection1/select?q=name%3Arxtest&wt=json&indent=true&spellcheck=true

The results are accurate and I get

{
      "responseHeader":{
        "status":0,
        "QTime":4,
        "params":{
          "spellcheck":"true",
          "indent":"true",
          "q":"name:rxtest",
          "wt":"json"}},
      "response":{"numFound":0,"start":0,"docs":[]
      },
      "spellcheck":{
        "suggestions":[
          "rxtest",{
            "numFound":1,
            "startOffset":5,
            "endOffset":11,
            "suggestion":["rztest"]}]}}
Anytime I run a query without the name values I get 0 results back.
/solr/collection1/select?q=enterprise_name%3Abecaus&wt=json&indent=true&spellcheck=true

{
  "responseHeader":{
    "status":0,
    "QTime":5,
    "params":{
      "spellcheck":"true",
      "indent":"true",
      "q":"enterprise_name:becaus",
      "wt":"json"}},
  "response":{"numFound":0,"start":0,"docs":[]
  },
  "spellcheck":{
    "suggestions":[]}} 
My guess is that there is something wrong in my scheme but everything looks
fine.

Schema.xml

<field name="name" type="text_general" indexed="true" stored="true"/>
<field name="enterprise_id" type="string" indexed="true" stored="true"
required="true" /> 
<field name="enterprise_name" type="text_general" indexed="true"
stored="true"/>

<field name="text" type="text_general" indexed="true" stored="false"
multiValued="true" />

   <dynamicField name="*_t"  type="text_general"    indexed="true" 
stored="true"/>
   <dynamicField name="*_txt" type="text_general"   indexed="true" 
stored="true" multiValued="true"/>
   <dynamicField name="attr_*" type="text_general" indexed="true"
stored="true" multiValued="true"/>

 <copyField source="name" dest="text"/>
 <copyField source="enterprise_name" dest="text"/> 


<fieldType name="text_general" class="solr.TextField"
positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true"
words="stopwords.txt" />
        
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true"
words="stopwords.txt" />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
solrconfig.xml

<requestHandler name="/select" class="solr.SearchHandler">
    
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <int name="rows">10</int>
       <str name="df">text</str> 
       
       <str name="spellcheck.dictionary">default</str> 
      
      <str name="spellcheck.dictionary">wordbreak</str>
      
      <str name="spellcheck.onlyMorePopular">false</str>
      
      <str name="spellcheck.extendedResults">false</str>
      
      <str name="spellcheck.count">5</str>
    </lst>

     <arr name="last-components">
    <str>spellcheck</str>
  </arr>
<requestHandler>

<searchComponent name="spellcheck" class="solr.SpellCheckComponent">

  <lst name="spellchecker">
    
    <str name="name">default</str>
    
    <str name="classname">solr.IndexBasedSpellChecker</str>
    
    <str name="field">name</str>
    
    <str name="spellcheckIndexDir">./spellchecker</str>
    
    <str name="accuracy">0.5</str>
    
    <float name="thresholdTokenFrequency">.0001</float>
    <str name="buildOnCommit">true</str>
  </lst>
  
  <lst name="spellchecker">
    <str name="name">wordbreak</str>
    <str name="classname">solr.WordBreakSolrSpellChecker</str>
    <str name="field">name</str>
    <str name="combineWords">true</str>
    <str name="breakWords">true</str>
    <int name="maxChanges">3</int>
    <str name="buildOnCommit">true</str>
  </lst>

  
  <str name="queryAnalyzerFieldType">text_general</str>
</searchComponent>

Any help would be appreciated.
Thanks!



--
View this message in context: http://lucene.472066.n3.nabble.com/Solr-SpellCheckComponent-only-shows-results-with-certain-fields-tp4090727.html
Sent from the Solr - User mailing list archive at Nabble.com.

Re: Solr SpellCheckComponent only shows results with certain fields

Posted by jazzy <ja...@hotmail.com>.
Hey,

I figured it out!

So the reason that only the name was working was because name was the only
field configured in the solrconfig. Once I did that then I followed this
link to solve the rest of the problem.

SOLR suggester multiple field autocomplete




--
View this message in context: http://lucene.472066.n3.nabble.com/Solr-SpellCheckComponent-only-shows-results-with-certain-fields-tp4090727p4090891.html
Sent from the Solr - User mailing list archive at Nabble.com.

Re: Solr SpellCheckComponent only shows results with certain fields

Posted by Raheel Hasan <ra...@gmail.com>.
what about this query? try to see if you get suggestions here:
/solr/collection1/select?q=*%3Abecaus&wt=json&indent=true&spellcheck=true


On Wed, Sep 18, 2013 at 4:02 AM, jazzy <ja...@hotmail.com> wrote:

> I'm trying to get the Solr SpellCheckComponent working but am running into
> some issues. When I run
> .../solr/collection1/select?q=%3A&wt=json&indent=true
>
> These results are returned
>
> {
>   "responseHeader": {
>     "status": 0,
>     "QTime": 1,
>     "params": {
>       "indent": "true",
>       "q": "*:*",
>       "_": "1379457032534",
>       "wt": "json"
>     }
>   },
>   "response": {
>     "numFound": 2,
>     "start": 0,
>     "docs": [
>       {
>         "enterprise_name": "because",
>         "name": "doc1",
>         "enterprise_id": "100",
>         "_version_": 1446463888248799200
>       },
>       {
>         "enterprise_name": "what",
>         "name": "RZTEST",
>         "enterprise_id": "102",
>         "_version_": 1446464432735518700
>       }
>     ]
>   }
> }
> Those are the values that I have indexed. Now when I want to query for
> spelling I get some weird results.
>
> When I run
>
> .../solr/collection1/select?q=name%3Arxtest&wt=json&indent=true&spellcheck=true
>
> The results are accurate and I get
>
> {
>       "responseHeader":{
>         "status":0,
>         "QTime":4,
>         "params":{
>           "spellcheck":"true",
>           "indent":"true",
>           "q":"name:rxtest",
>           "wt":"json"}},
>       "response":{"numFound":0,"start":0,"docs":[]
>       },
>       "spellcheck":{
>         "suggestions":[
>           "rxtest",{
>             "numFound":1,
>             "startOffset":5,
>             "endOffset":11,
>             "suggestion":["rztest"]}]}}
> Anytime I run a query without the name values I get 0 results back.
>
> /solr/collection1/select?q=enterprise_name%3Abecaus&wt=json&indent=true&spellcheck=true
>
> {
>   "responseHeader":{
>     "status":0,
>     "QTime":5,
>     "params":{
>       "spellcheck":"true",
>       "indent":"true",
>       "q":"enterprise_name:becaus",
>       "wt":"json"}},
>   "response":{"numFound":0,"start":0,"docs":[]
>   },
>   "spellcheck":{
>     "suggestions":[]}}
> My guess is that there is something wrong in my scheme but everything looks
> fine.
>
> Schema.xml
>
> <field name="name" type="text_general" indexed="true" stored="true"/>
> <field name="enterprise_id" type="string" indexed="true" stored="true"
> required="true" />
> <field name="enterprise_name" type="text_general" indexed="true"
> stored="true"/>
>
> <field name="text" type="text_general" indexed="true" stored="false"
> multiValued="true" />
>
>    <dynamicField name="*_t"  type="text_general"    indexed="true"
> stored="true"/>
>    <dynamicField name="*_txt" type="text_general"   indexed="true"
> stored="true" multiValued="true"/>
>    <dynamicField name="attr_*" type="text_general" indexed="true"
> stored="true" multiValued="true"/>
>
>  <copyField source="name" dest="text"/>
>  <copyField source="enterprise_name" dest="text"/>
>
>
> <fieldType name="text_general" class="solr.TextField"
> positionIncrementGap="100">
>       <analyzer type="index">
>         <tokenizer class="solr.StandardTokenizerFactory"/>
>         <filter class="solr.StopFilterFactory" ignoreCase="true"
> words="stopwords.txt" />
>
>         <filter class="solr.LowerCaseFilterFactory"/>
>       </analyzer>
>       <analyzer type="query">
>         <tokenizer class="solr.StandardTokenizerFactory"/>
>         <filter class="solr.StopFilterFactory" ignoreCase="true"
> words="stopwords.txt" />
>         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
> ignoreCase="true" expand="true"/>
>         <filter class="solr.LowerCaseFilterFactory"/>
>       </analyzer>
>     </fieldType>
> solrconfig.xml
>
> <requestHandler name="/select" class="solr.SearchHandler">
>
>      <lst name="defaults">
>        <str name="echoParams">explicit</str>
>        <int name="rows">10</int>
>        <str name="df">text</str>
>
>        <str name="spellcheck.dictionary">default</str>
>
>       <str name="spellcheck.dictionary">wordbreak</str>
>
>       <str name="spellcheck.onlyMorePopular">false</str>
>
>       <str name="spellcheck.extendedResults">false</str>
>
>       <str name="spellcheck.count">5</str>
>     </lst>
>
>      <arr name="last-components">
>     <str>spellcheck</str>
>   </arr>
> <requestHandler>
>
> <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
>
>   <lst name="spellchecker">
>
>     <str name="name">default</str>
>
>     <str name="classname">solr.IndexBasedSpellChecker</str>
>
>     <str name="field">name</str>
>
>     <str name="spellcheckIndexDir">./spellchecker</str>
>
>     <str name="accuracy">0.5</str>
>
>     <float name="thresholdTokenFrequency">.0001</float>
>     <str name="buildOnCommit">true</str>
>   </lst>
>
>   <lst name="spellchecker">
>     <str name="name">wordbreak</str>
>     <str name="classname">solr.WordBreakSolrSpellChecker</str>
>     <str name="field">name</str>
>     <str name="combineWords">true</str>
>     <str name="breakWords">true</str>
>     <int name="maxChanges">3</int>
>     <str name="buildOnCommit">true</str>
>   </lst>
>
>
>   <str name="queryAnalyzerFieldType">text_general</str>
> </searchComponent>
>
> Any help would be appreciated.
> Thanks!
>
>
>
> --
> View this message in context:
> http://lucene.472066.n3.nabble.com/Solr-SpellCheckComponent-only-shows-results-with-certain-fields-tp4090727.html
> Sent from the Solr - User mailing list archive at Nabble.com.
>



-- 
Regards,
Raheel Hasan