我在浏览器中使用以下查询尝试了Solr的 MoreLikeThis 功能:
<div class="Bloc">
<div class="bloc">Bloc-1</div>
<div class="bloc">Bloc-2</div>
<div class="bloc bloc-default">Bloc-defaut</div>
</div>
<div class="img">
<img class="img-1" title="image-1" src="//lorempixel.com/100/111" />
<img class="img-2" title="image-2" src="//lorempixel.com/100/110" />
</div>
哪个有效,但响应如下:
http://localhost:8983/solr/gettingstarted_shard1_replica1/select?qt=mlt&q=id:31&mlt=true&mlt.fl=firstName,lastName&mlt.mindf=1&mlt.mintf=1&mlt.count=10
为什么在ids 32和33的结果中没有返回<response>
<lst name="responseHeader">
... //removed for brevity
</lst>
<result name="response" numFound="1" start="0" maxScore="1.0">
<doc>
<str name="id">31</str>
<str name="firstName">Alex Luis Armstrong</str>
<str name="lastName">Major Wolf</str>
<long name="_version_">1534338957920174080</long>
</doc>
</result>
<lst name="moreLikeThis">
<result name="31" numFound="4" start="0" maxScore="0.419522">
<doc>
<str name="id">32</str>
<float name="score">0.419522</float>
</doc>
<doc>
<str name="id">33</str>
<float name="score">0.0254616</float>
</doc>
</result>
</lst>
</response>
和firstName
?
答案 0 :(得分:1)
实际上我不确定发生了什么,但我建议调查两个地方。
qt=mlt
。指定的请求处理程序或查询类型参数(solrconfig.xml
)可以覆盖您的参数。因此,我建议您删除qt
参数,然后尝试添加mlt.match.include=true
。此参数指定响应是否应包含匹配的文档。schema.xml
,特别是我建议发布声明firstName
和lastName
的部分。答案 1 :(得分:0)
使用fl
参数指定要返回的字段,就像使用典型(非mlt)查询一样。
mlt.fl
参数只是指示Solr仅考虑具有相似firstName
和lastName
字段的文档。
如果您还希望返回这些字段,请传递...&fl=firstName,lastName&...
。