我正试图在我的测试系统上运行更像这个查询解析器。测试系统安装了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尝试等效查询时,我没有得到任何结果:
响应如下:
"response":{"numFound":0,"start":0,"maxScore":0.0,"docs":[]}
到目前为止,我没有做任何事情来启用或配置MLTQParser,但它确实启用了,因为我在使用不存在的文档ID时遇到错误。
知道为什么这不起作用吗?
答案 0 :(得分:1)
我最终弄明白为什么会失败。正在使用search_text_st
创建copyField
字段。 Cloud MLT Query Parser使用实时获取处理程序来检索要为关键字挖掘的字段。由于实现实时获取处理程序的方式,它不会返回使用copyField
填充的字段的数据。 (见https://issues.apache.org/jira/browse/SOLR-3743)
更改配置以使用源字段使其正常工作。