SOLR更像 - 这个查询解析器不返回任何结果

时间:2017-06-19 16:36:11

标签: solr solrcloud morelikethis

我正试图在我的测试系统上运行更像这个查询解析器。测试系统安装了SOLR cloud 6.5.0。使用以下配置启用MLT处理程序:

<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":[...]}

但是,当我使用带有{!mlt qf=search_text_st fl=search_text_st minwl=4 maxwl=18}123的MLTQParser尝试等效查询时,我没有得到任何结果:

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时遇到错误。

知道为什么这不起作用吗?

1 个答案:

答案 0 :(得分:1)

我最终弄明白为什么会失败。正在使用search_text_st创建copyField字段。 Cloud MLT Query Parser使用实时获取处理程序来检索要为关键字挖掘的字段。由于实现实时获取处理程序的方式,它不会返回使用copyField填充的字段的数据。 (见https://issues.apache.org/jira/browse/SOLR-3743

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