什么是最好的 Django 搜索应用程序? [关闭]

Posted

技术标签:

【中文标题】什么是最好的 Django 搜索应用程序? [关闭]【英文标题】:What's the best Django search app? [closed] 【发布时间】:2010-09-08 11:26:33 【问题描述】:

我正在构建一个需要搜索功能的 Django 项目,在出现 django.contrib.search 之前,我必须选择一个搜索应用程序。那么,哪个是最好的?我所说的“最好”是指...

易于安装/设置 具有 Django 或至少 Python 友好的 API 可以执行相当复杂的搜索

以下是我听说过的一些应用,如果您知道,请推荐其他应用:

djangosearch django-sphinx

我还想避免使用第三方搜索引擎(如 Google SiteSearch),因为我想索引的一些数据仅供网站成员使用,不应公开。

【问题讨论】:

djangopackages.com/grids/g/search 通常情况下,“最佳”之类的内容非常主观,但正如公认的答案所示,django 确实有一个“最佳”搜索应用程序。 除非我完全误解了 django,否则这仍然是一个库请求,因此离题了。 【参考方案1】:

查看Haystack Search - 一个基于新模型的搜索抽象层,目前支持Xapian、Solr 和Whoosh。看起来它得到了很好的支持和记录。

【讨论】:

Haystack 正在积极开发中,作者随时可以通过电子邮件列表联系到。 来自 djangosearch 项目:“该项目不再处于积极开发中。如果您正在寻找一个可与多个搜索引擎一起使用的 django 全文搜索应用程序,请查看 haystack。如果您正在寻找对于特定于 Solr 的东西,您可能想尝试 solango。" Haystack 在相当长的一段时间内一直受到严重支持(如果有的话)。我建议你在这一点上避免它。也许他们会在未来修复它,但它现在处于一个糟糕的地方。 我同意,最新版本的 haystack (2.1) 根本无法与我的 python 2.7 版本的 django 1.4 一起使用。【参考方案2】:

贾斯汀,我先试试djangosearch:Jacob Kaplan-Moss(Django 的首席开发人员)正在研究它。

潜在危害:

主页警告 API 可能不完全稳定

潜在好处:

“长期目标是让它成为django.contrib.search。”

【讨论】:

该页面现在显示“该项目不再处于积极开发中。如果您正在寻找可与多个搜索引擎一起使用的 django 全文搜索应用程序,请查看 Haystack。”【参考方案3】:

我和很多其他人一样在寻找同样的东西。让我们希望 django.contrib.search 将尽快添加。

与此同时,这是我发现的:

http://code.google.com/p/djangosearch/ http://code.google.com/p/django-sphinx/ http://code.google.com/p/djapian/ http://code.google.com/p/django-search-lucene/ http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/

对我来说,大多数看起来都相当复杂,坦率地说,实施起来有点令人生畏。 我很想知道你对这些的看法。

【讨论】:

【参考方案4】:

djangosearch 的谷歌代码页表明它不再处于积极开发中,并建议haystack 或solango。

【讨论】:

Solango 表示它不再处于开发阶段,并建议使用 Haystack。【参考方案5】:

我推荐 Sphinx 用于全文搜索和聚合,django-sphinx 足以用于生产用途。我们发现 Sphinx 是索引和搜索文档的资源最少且最快的方法,并且 django-sphinx 是 sphinx 客户端之上的一个很好的包装器。

聚合分组特别好,例如,如果您想显示有多少具有特定标签或特定作者(或两者)的文档与搜索匹配。内存中的属性更新也很方便,尤其是对于立即删除已删除的文章。

【讨论】:

【参考方案6】:

谢谢加思。之前看到 djangosearch 想成为 Django 的官方搜索,但是因为找不到任何文档,所以犹豫要不要使用它!幸运的是,有一个我以前没见过的README in subversion,它让 API 看起来很酷:

# set up the model
class Event(models.Model):
    title = models.CharField(max_length=255)
    date = models.DateField()
    is_outdoors = models.BooleanField()

    index = djangosearch.ModelIndex(text=['title'], 
                                    additional=['date', 'is_outdoors'])

# run a search
results = Event.index.search("django conference")

【讨论】:

【参考方案7】:

我只需要一个非常快速的解决方案,对于内部应用来说不会大惊小怪。

我找到了文章Adding search to Django in a snap,这对我来说非常棒!

显然它缺乏真正项目(如 Haystack)的速度、可扩展性和功能,但这个更容易设置,而且我真的不需要关键字 AND 搜索。

【讨论】:

【参考方案8】:

您可能需要考虑让雅虎通过构建您自己的搜索服务 (BOSS) 来完成所有艰苦的工作。这是一篇很棒的博客文章,可引导您完成整个过程: http://www.peterkrantz.com/2008/yahoo-search-in-django/

【讨论】:

我有一个 Django 包,可以让它变得更简单:bitbucket.org/jaap3/django-bosssearch【参考方案9】:

看来这里的每个人都错过了django-xappy

在对所有现有的 Django 搜索插件进行快速评估后,我发现这是最灵活且最易于使用的插件。它在一些地方有点粗糙,但它仍然是在 Django 项目中使用Xapian 搜索引擎的最佳方式。

【讨论】:

【参考方案10】:

您可能想查看Django Solr search(又名“Solango”),它附带一些很好的文档来帮助您入门...

【讨论】:

【参考方案11】:

如果您有大量数据要编入索引,或者您希望获得高流量,我建议您使用一些外部搜索引擎,例如 Solr。这样,您将保持无共享方法,并能够独立扩展您的网站组件。

【讨论】:

【参考方案12】:

我想我得向 Djapian 大喊一声。

它坚如磐石......只需拉下一个源分布并查看内部。一流的代码,不是很多cmets tho..

它仍然是一个年轻的软件项目,但我认为 django 社区应该大力支持这个项目。

【讨论】:

【参考方案13】:

谢谢乔,

我们决定使用 Tsearch2 和自定义 postgres 适配器。 Tsearch2 不需要额外的进程来运行,这很方便,因为我们在一个内存有限的 WebFaction 主机上......它还没有完全完成,但似乎是一个很好的解决方案......

【讨论】:

【参考方案14】:

我发现 Djoosh 依赖于纯 Python 外部搜索引擎 Whoosh 与我的“Python”大脑一起工作。

【讨论】:

【参考方案15】:

如果你愿意使用第三方搜索引擎,我可以推荐Yahoo BOSS 和django-bosssearch。

Yahoo BOSS 是一项付费服务​​,但它可以让您在服务器上设置和维护其他搜索软件。

【讨论】:

以上是关于什么是最好的 Django 搜索应用程序? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Django 和 Bootstrap:推荐啥应用程序? [关闭]

在没有数据持久性的情况下,如何最好地在 Django 中压缩表单:最 Djangonic 的方法是啥? [关闭]

Lucene 或 Mysql 全文搜索 [关闭]

什么是最好的Eclipse GWT插件? [关闭]

除非输入搜索查询,否则隐藏 Django admin 中的所有记录[关闭]

在 Ruby on Rails 中搜索的最佳选择是啥? [关闭]