2010-10-31 70 views
1

我正在使用Django,haystack,solr来搜索。我能够搜索,现在我想用more_like_this找到类似的项目。当我尝试使用more_like_this功能时,我找回了那些模型类型的所有对象,而不是那些与之紧密匹配的对象。下面是一些代码来告诉你我是如何使用它:草垛more_like_this全部返回

def resource_view(request, slug): 
    resource = Resource.objects.get(slug=slug) 
    versions = Version.objects.get_for_object(resource) 
    related = SearchQuerySet().more_like_this(resource) 
    add_comment_form = AddCommentForm() 
    return render_to_response('resources/resource.html', 
           {'resource': resource, 
           'versions': versions, 
           'related': related, 
           'add_comment_form': add_comment_form}, 
           context_instance=RequestContext(request)) 

显然,我需要能够在solrconfig.xml中文件MLT。任何人都知道如何做到这一点,或有用的文章/教程?

+0

它看起来像你对我使用得正确,但你有它在'solrconfig.xml'启用? – 2010-10-31 19:58:17

+0

你是对的我没有在solrconfig.xml中启用它,你能指点我一个很好的教程或文章如何做到这一点? – asawilliams 2010-10-31 20:35:19

+0

你可以在你的solrconfig.xml中添加下面的答案配置,然后重启太阳能 – soField 2011-11-14 18:56:50

回答

3

陈旧的问题,但这里的反正答案:

正如约翰已经指出的那样,你需要添加更多类似这样的处理程序(MLT)到您的Solr的配置。这应该做的,把它放在某个地方你solrconfig.xml中,并重新加载SOLR(Tomcat)的:

<requestHandler name="/mlt" class="solr.MoreLikeThisHandler"> 
<lst name="defaults"> 
    <str name="mlt.mintf">1</str> 
    <str name="mlt.mindf">1</str> 
    <str name="mlt.minwl">3</str> 
    <str name="mlt.maxwl">15</str> 
    <str name="mlt.maxqt">20</str> 
    <str name="mlt.match.include">false</str> 
</lst> 
</requestHandler> 
+0

嗨!我有一个类似的问题,我已经正确地将此配置添加到solrconfig.xml,但te more_like_this方法是返回空结果。任何想法可能发生什么? – acrespo 2013-05-23 16:55:49