使用SOLR,我的应用程序正常搜索(/select?q=
)。
普通查询网址:
/select?q=title:lovely
现在想在我的应用程序中实现更多这样的(MLT)。在Solr中配置MLT就像这样。
<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>
网址:
/mlt?q=title:lovely&mlt.fl=title
我得到的结果与MLT相同,就像普通的选择查询一样。如果我为MLT做了错误的配置,你能指导我吗?
先谢谢,
AnilJayanti
答案 0 :(得分:2)
solrconfig.xml中的设置对我来说是正确的。正如Paige Cook在他的回答中提到的那样,如果您正在使用的字段设置为在schema.xml中存储术语向量termVectors=true
,那么您将获得更好的结果。术语向量无法在事后添加,因此您必须重建索引才能将其添加。您可以考虑在请求中添加mlt.count
参数以仅获得前N个结果
我获得良好MLT结果的经验是,参数需要基于实验进行一些微调,特别是mlt.mintf
。从低开始慢慢增加,直到你开始得到“感觉正确”的结果。相似性是一个非常主观的尝试量化的东西,需要一些实验来获得正确的设置。
答案 1 :(得分:0)
根据Solr Wiki上的MoreLikeThis文档,您需要为架构中的字段启用TermVector,或者必须存储该字段。
此外,您可能需要考虑使用SearchHandler中的MoreLikeThisComponent,如上面的链接所示。但这将取决于您计划如何在应用程序中使用/实现MLT功能。