2017-06-19 121 views
1

我想獲得更像這個查詢解析器在我的測試系統上工作。測試系統安裝了SOLR Cloud 6.5.0。該MLT處理程序與以下配置啓用:SOLR更像這個查詢解析器返回沒有結果

<requestHandler name="/mlt" class="solr.MoreLikeThisHandler"> 
    <lst name="defaults"> 
     <str name="mlt.qf">search_text_st</str> 
     <str name="mlt.fl">search_text_st</str> 
     <int name="mlt.minwl">4</int> 
     <int name="mlt.maxwl">18</int> 
    </lst> 
</requestHandler> 

當我查詢類似於處理程序特定的文檔文件,我得到預期的效果。例如:

http://localhost:8983/solr/MyCloud/mlt?q=id:123

上面的查詢將返回結果:

"response":{"numFound":361,"start":0,"maxScore":113.24594,"docs":[...]} 

然而,當我嘗試使用MLTQParser與{!mlt qf=search_text_st fl=search_text_st minwl=4 maxwl=18}123等效的查詢,我沒有得到任何結果:

http://localhost:8983/solr/MyCloud/select?q=%7B!mlt+qf%3Dsearch_text_st+fl%3Dsearch_text_st+minwl%3D4+maxwl%3D18%7D123

答案如下:

"response":{"numFound":0,"start":0,"maxScore":0.0,"docs":[]} 

到目前爲止,我沒有做任何事情來啓用或配置MLTQParser,但似乎啓用了,因爲在使用不存在的文檔ID時出現錯誤。

任何想法,爲什麼這不工作?

回答

0

我終於明白爲什麼這是失敗的。 search_text_st字段正在使用copyField創建。 Cloud MLT Query Parser使用實時獲取處理程序來檢索要爲關鍵字開採的字段。由於實時獲取處理程序的實現方式,它不會爲使用copyField填充的字段返回數據。 (見https://issues.apache.org/jira/browse/SOLR-3743

更改配置以使用源字段使其工作。