2

我想在我正在处理的站点中使用 Django-Haystack-Solr。我已经完成了 Haystack 文档中的示例,并在 Internet 上广泛搜索了其他示例。我很难将其集成到我的网站中。我发现http://www.slideshare.net/Nagyman/faceted-navigation-using-django-haystack-and-solr很有趣,但不知道如何将它们整合在一起。如果有人遇到过一些“强大的”Haystack faceting 示例、开源网站或愿意分享您自己的代码,请提供链接/分享代码。谢谢您的帮助。

顺便说一句 - 我想对来自多个模型(表)的多个字段进行分面,并找出一种为分面使用替代标签的方法。

4

2 回答 2

2

这是我最近就该主题所做的教程。这使用弹性搜索而不是我个人认为更容易实现的 solr。

Django Haystack + Elasticsearch + 自动完成 + 分面教程

我实现了以下演示商店站点来演示基于多项选择的分面。

虽然从图像中看不出来,但本教程还讨论了自动完成的实现。

在此处输入图像描述

但即使您想将它与 Solr 一起使用,与分面和自动完成相关的大部分代码仍然保持不变。所以是的,如果您使用 Solr,此代码同样适用。对于 solr,您只需要更改HAYSTACK_CONNECTIONS设置文件中的值并通过运行构建 Solr 索引manage.py build_solr_schema。将 XML 输出放到 Solr 的 schema.xml 文件中,然后重新启动 Solr 服务器。Python/Django 代码中没有其他任何变化。

Whoosh 实现了 faceting,但是 Django Haystack 在这个开发上还没有赶上 Whoosh,所以如果你想实现 faceting,请远离它。

代码太大,无法在此处共享,但对于任何想要深入了解代码的人来说,这里是完整的源代码

于 2017-01-23T17:21:04.797 回答
0

虽然老问题,但无论如何试图给出答案。:) 在你的 url.conf 中加入类似的东西

sqs = SearchQuerySet().facet('auther') 

+

urlpatterns += patterns('haystack.views',
url(r'^$', FacetedSearchView(form_class=FacetedSearchForm, searchqueryset=sqs), name='haystack_search'),

)

您应该在 app1 中定义了方面。

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 }}&amp;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 -->
于 2013-06-24T17:41:32.750 回答