我的应用程序在使用SOLR进行普通搜索(/select?q=)时工作得很好。
普通查询网址:/select?q=title:lovely
现在想在我的应用程序中实现更像这样的(MLT)。在下面的Solr中配置MLT,如下所示。
solrconfig.xml
<requestHandler name="/mlt" class="solr.MoreLikeThisHandler">
<lst name="defaults">
<str name="mlt.fl">title</str>
<str name="mlt.mintf">1</str>
<str name="mlt.mindf">2</str>
<str name="mlt.boost">true</str>
</lst>
</requestHandler>URL
/mlt?q=title:lovely&mlt.fl=title
我得到的结果和MLT计数和普通select查询一样。如果我做错了MLT的配置,你能指点我吗?
提前谢谢,
AnilJayanti
发布于 2012-10-05 22:35:26
在我看来,solrconfig.xml中的设置是正确的。正如Paige在他的回答中提到的,如果您使用的字段被设置为在termVectors=true中存储术语向量,那么效果会更好。术语向量不能在事实之后添加,因此您必须重新构建索引才能将它们添加进去。您可以考虑将mlt.count参数添加到请求中,以便只获得最上面的N个结果。
我在获得良好的MLT结果方面的经验是,这些参数需要一些基于实验的微调,特别是mlt.mintf。开始低,慢慢增加,直到你开始得到“感觉正确”的结果。相似性是一个非常主观的东西试图量化,并将需要一些实验,以获得正确的设置。
发布于 2012-10-05 17:14:59
根据Solr上的MoreLikeThis文档,您需要在模式中为您的字段启用TermVectors,或者必须存储该字段。
此外,您可能需要考虑在MoreLikeThisComponent中使用SearchHandler,如上面的链接所述。但这将取决于您计划如何在应用程序中使用/实现MLT功能。
https://stackoverflow.com/questions/12739471
复制相似问题