有没有将Haystack/Solr与Django集成的示例?

1 投票
1 回答
2320 浏览
提问于 2025-04-15 15:52

注意:这个问题最开始是关于Xapian的,但因为跨平台的问题和对Xapian理解不够,我们团队最终选择了Solr

我在寻找一些代码片段、技巧、建议、链接,以及需要注意的事项(小陷阱)。我的技术栈包括:

  • MySQL 5.1(其实不太相关)
  • 在Red Hat和Windows上配置,最后部署到Linux
  • 我们团队主要在Windows机器上进行开发
  • 我们的配置中没有PHP或Java支持,所以没有Solr或Django-Sphinx 最后还是选择了Java!

谢谢大家的帮助和建议!

1 个回答

4

这里有一些注意事项和资源。我给的建议主要是关于Haystack的,因为我对Xapian作为后端的使用经验不多。

  1. 安装Xapian(可以参考Haystack的文档)- 需要注意的是,Haystack本身不支持Xapian: http://haystacksearch.org/docs/installing_search_engines.html#xapian
  2. 在开发或测试某些功能时,使用Whoosh可能会很有帮助,但要记住,它不支持Xapian的所有功能。如果你尝试用Whoosh去做它不支持的事情,Haystack会在控制台给你一个警告,处理得很优雅,所以在它们之间切换是很简单的: http://haystacksearch.org/docs/installing_search_engines.html#whoosh
  3. 这是我自己代码中的一个片段,展示了如何轻松切换Whoosh和Solr:

    # Haystack search settings
    HAYSTACK_SITECONF = 'project.search_sites'
    HAYSTACK_INCLUDE_SPELLING = True
    # Haystack backend settings
    HAYSTACK_SEARCH_ENGINE = 'solr' # Switch this to 'whoosh' to use that backend instead
    if DEBUG:
        HAYSTACK_SOLR_URL = 'solr.development.url'
    else:
        HAYSTACK_SOLR_URL = 'solr.production.url'
    HAYSTACK_WHOOSH_PATH = os.path.join(PROJECT_ROOT, 'search_index', 'whoosh')
    
  4. 据我所知,只要Django支持你选择的数据库,数据库的选择对你来说没有太大影响,因为Haystack使用的是ORM。
  5. 如果你遇到任何问题,Haystack的开发者(Daniel Lindsley)非常乐于助人,回复也很快。你可以在django-haystack Google小组或者#haystack IRC频道寻求帮助(当然,如果你在官方文档中找不到答案的话)。

撰写回答