2017-06-19 89 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

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