我想在我正在制作的网站上使用Django-Haystack-Solr。我已经完成了Haystack文档中的示例,并在其他示例中广泛搜索了互联网。我很难实现将其集成到我的网站中。我发现http://www.slideshare.net/Nagyman/faceted-navigation-using-django-haystack-and-solr很有趣,但没有达到如何将它们全部拉到一起。如果有人遇到过一些“健壮”的干草堆面对面的例子,开源的网站,或者愿意分享你自己的一些代码请提供链接/共享代码。谢谢你的帮助。
btw - 我想在多个模型(表格)的多个字段上进行分析,并想出一种方法来为构面使用替代标签。
答案 0 :(得分:1)
这是我最近关于该主题的教程。这使用Elastic搜索而不是solr,我个人认为它更容易实现。
Django Haystack + Elasticsearch + Autocomplete + Faceting Tutorial
我实施了以下演示商店网站,以展示基于多重选择的分面。
虽然图像中不明显,但本教程还讨论了自动完成实现。
但即使你想在Solr中使用它,大多数与分面和自动完成相关的代码仍然是相同的。所以,如果你使用Solr,这个代码同样适用。对于solr,你只需要在你的设置文件中更改HAYSTACK_CONNECTIONS
的值,并通过运行manage.py build_solr_schema
来构建Solr索引。删除Solr的schema.xml文件中的XML输出并重新启动Solr服务器。 Python / Django代码中没有其他任何变化。
飞快移动实现了分面,但是Django Haystack还没有在这个开发上赶上Whoosh,所以如果你想实现分面,请保持清醒。
代码太大,无法在此处分享,但对于想要深入了解代码的人来说,这里是complete source code。
答案 1 :(得分:0)
虽然老问题但无论如何试图给出答案。 :) 把它放在你的url.conf中
sqs = SearchQuerySet().facet('auther')
+
urlpatterns += patterns('haystack.views',
url(r'^$', FacetedSearchView(form_class=FacetedSearchForm, searchqueryset=sqs), name='haystack_search'),
)
你应该在app1中定义facet。
title = indexes.CharField(model_attr='title',faceted=True,null=True)
模板应该类似于以下内容。
<!-- Begin faceting. -->
<div>
<dl>
{% if facets.fields.wish_text %}
{% for author in facets.fields.title %}
<dd><a href="{{ request.get_full_path }}&selected_facets=author_exact:{{ author.0|urlencode }}">{{ author.0 }}</a> ({{ author.1 }})</dd>
{% endfor %}
{% else %}
<p>No author facets.</p>
{% endif %}
</dl>
</div>
<!-- End faceting -->