2017-04-21 425 views
0

我遇到了solr 6.5.0的拼寫檢查組件問題。如果我通過拼寫檢查請求處理程序/ spell運行查詢,則查詢將按預期工作,併爲錯誤的單詞提供拼寫建議。SOLR拼寫檢查沒有返回結果

{ 
    "responseHeader":{ 
    "status":0, 
    "QTime":42}, 
    "response":{"numFound":0,"start":0,"docs":[] 
    }, 
    "spellcheck":{ 
    "suggestions":{ 
     "injary":{ 
     "numFound":3, 
     "startOffset":0, 
     "endOffset":6, 
     "origFreq":0, 
     "suggestion":[{ 
      "word":"injury", 
      "freq":121}, 
      { 
      "word":"inward", 
      "freq":3}, 
      { 
      "word":"injure", 
      "freq":1}]}}, 
    "correctlySpelled":false, 
    "collations":{ 
     "collation":{ 
     "collationQuery":"injury", 
     "hits":121, 
     "misspellingsAndCorrections":[ 
      "injary","injury"]}, 
     "collation":{ 
     "collationQuery":"inward", 
     "hits":3, 
     "misspellingsAndCorrections":[ 
      "injary","inward"]}, 
     "collation":{ 
     "collationQuery":"injure", 
     "hits":1, 
     "misspellingsAndCorrections":[ 
      "injary","injure"]}}}} 

但是,如果我通過標準請求處理程序運行查詢/ select,我不會收到任何建議。

{ 
    "responseHeader":{ 
    "status":0, 
    "QTime":0, 
    "params":{ 
     "q":"injary", 
     "indent":"on", 
     "spellcheck":"on", 
     "wt":"json", 
     "_":"1492780436450"}}, 
    "response":{"numFound":0,"start":0,"docs":[] 
    }} 

任何幫助將不勝感激。

我修改了solrconfig.xml中帶來兩個請求處理成線如下,其餘爲默認設置:

 <lst name="spellchecker"> 
     <str name="name">default</str> 
     <str name="field">content</str> 
     <str name="classname">solr.DirectSolrSpellChecker</str> 
     <str name="distanceMeasure">internal</str> 
     <float name="accuracy">0.5</float> 
     <int name="maxEdits">2</int> 
     <int name="minPrefix">1</int> 
     <int name="maxInspections">5</int> 
     <int name="minQueryLength">4</int> 
     <float name="maxQueryFrequency">0.01</float> 
     <float name="thresholdTokenFrequency">.0001</float> 
     </lst> 

    <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy"> 
    <lst name="defaults"> 
     <!-- Solr will use suggestions from both the 'default' spellchecker 
      and from the 'wordbreak' spellchecker and combine them. 
      collations (re-written queries) can include a combination of 
      corrections from both spellcheckers --> 
     <str name="spellcheck.dictionary">default</str> 
     <str name="spellcheck">on</str> 
     <str name="spellcheck.extendedResults">true</str> 
     <str name="spellcheck.count">10</str> 
     <str name="spellcheck.alternativeTermCount">5</str> 
     <str name="spellcheck.maxResultsForSuggest">5</str> 
     <str name="spellcheck.collate">true</str> 
     <str name="spellcheck.collateExtendedResults">true</str> 
     <str name="spellcheck.maxCollationTries">10</str> 
     <str name="spellcheck.maxCollations">5</str> 
     <str name="wt">json</str> 
    </lst> 
    <arr name="last-components"> 
     <str>spellcheck</str> 
    </arr> 
    </requestHandler> 

<requestHandler name="/select" class="solr.SearchHandler"> 
    <!-- default values for query parameters can be specified, these 
     will be overridden by parameters in the request 
     --> 
    <lst name="defaults"> 
     <str name="echoParams">explicit</str> 
     <int name="rows">10</int> 
     <str name="df">_text_</str> 
     <str name="wt">json</str> 
     <!-- spell check component configuration --> 
     <str name="spellcheck">true</str> 
     <str name="spellcheck.count">5</str> 
     <str name="spellcheck.collate">true</str> 
     <str name="spellcheck.maxCollationTries">5</str> 
    </lst> 
    <arr name="last-components"> 
     <str>spellcheck</str> 
    </arr> 
    </requestHandler> 
+0

這是你的'solrconfig.xml'的一部分,你已經修改後重新啓動了Solr? – freedev

+0

我在更改後重新啓動 – Zoran

回答

0

它出現的問題涉及到我的託管模式文件。

我在解析XML文件,solr自動將XML文件的字段添加到託管架構文件中作爲類型字符串。當我改變我的字典字段鍵入text_general它開始按預期工作。

我主持人看不出這是如何工作的,但我沒有做任何其他改變。我刪除了我的核心,並從頭開始,以確保我沒有錯,但它的工作。