Django CMS 搜索引擎,几个问题

Posted

技术标签:

【中文标题】Django CMS 搜索引擎,几个问题【英文标题】:Django CMS search engine, few questions 【发布时间】:2014-09-12 10:31:57 【问题描述】:

很难找到这方面的好文档。我正在尝试为使用 CMS 2.4 版构建的一个非常小的 Django CMS 站点构建一个简单的搜索引擎。我发现最好的方法是使用 Haystack + django-cms-search,然后它告诉我该包已被弃用并使用 aldryn-search 代替,文档缺乏大量时间。

据我所知,我需要创建一个 search_indexes.py ,但这会去哪里?我以为这是特定于应用程序的?如果我只是用它来索引 CMS 中的 Page 模型,我该如何整合它?

【问题讨论】:

【参考方案1】:

对于 django-cms-search 将是您的解决方案,一旦您切换到 >= 3.x,那么 aldryn-search 就是您的解决方案。

原因是aldryn-search 基本上是django-cms-search 的fork/refactor,目标是haystack 2.x 和cms 3.x

我正在考虑为 aldryn-search 添加向后兼容性以在 cms 2.4 上工作,但为了让您启动并运行,您可以执行以下操作。

安装django-cms-search 并将haystackcms_search 添加到您的INSTALLED_APPS 设置中。

这应该允许您已经开始索引页面,如果没有,请发布回溯:)。

一旦您能够索引页面,现在由您决定是否要使用 apphook 或固定 url 通过 cms 管理搜索页面。

通常在使用搜索时,需要调整一些内容并添加特定于搜索的模板,为此我强烈建议在您的项目中创建一个search 应用程序,添加一个models.py,然后将此应用程序添加到您的@987654332 @。

现在回到搜索页面,如果你选择使用 apphook,那么在你的搜索应用中,创建一个 cms_app.py 文件并添加以下内容:

from cms_search.cms_app import HaystackSearchApphook
apphook_pool.register(HaystackSearchApphook)

这会将来自 django-cms-search 的打包 apphook 注册到 cms(这在默认情况下会发生,但现在不会发生)。

否则,如果您选择不由 cms 管理的固定 url,您只需在搜索应用中添加 urls.py 即可:

from django.conf.urls import *

from haystack.views import search_view_factory

urlpatterns = patterns('search.views',
    url('^$', search_view_factory(), name='haystack-search'),
)

然后在您的项目的urls.py 中,您可以将search.urls 包含在您想要的任何名称下,如下所示:

url(r'^search/', include('search.urls')),

【讨论】:

以上是关于Django CMS 搜索引擎,几个问题的主要内容,如果未能解决你的问题,请参考以下文章

django cms 搜索多个站点?

django cms [aldryn newsblog] 替换插件模板

帝国cms全文搜索 增加自定义字段搜索

纸壳CMS 3.4.4 新增搜索引擎访问日志

帝国cms搜索问题,输入网址没有的内容就提示没有内容,输入网站中有的内容点击搜索就是404页面。

Magnolia CMS 5.5 全文搜索