关于python:什么是最好的Django搜索应用程序?

What's the best Django search app?

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

  • 易于安装/设置
  • 有一个Django——或者至少是对python友好的API
  • 可以执行相当复杂的搜索

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

  • DjangSoSoCH
  • 丹焦狮身人面像

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


查看haystack搜索——一个新的基于模型的搜索抽象层,目前支持xapian、solr和whoosh。看起来它得到了很好的支持和记录。


Justin,我先试试Djangosearch:JacobKaplanMoss(Django的主要开发人员)正在开发它。

潜在危险:

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

潜在利益:

  • "长期目标是使其成为django.contrib.search"。


我和其他很多人一样,也在寻找同样的东西。希望很快能添加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/

对我来说,大多数看起来相当复杂,坦率地说,执行起来有点令人望而生畏。我有兴趣了解你对这些的看法。


Djangosearch的Google代码页表明它已不再处于活动开发阶段,并建议使用Haystack或Solango。


我建议使用斯芬克斯进行全文搜索和聚合,而Django Sphinx足以满足生产使用。我们发现Sphinx是索引和搜索文档的最不占用资源和最快的方式,Django Sphinx是Sphinx客户机上一个很好的包装器。

如果您希望显示具有特定标记或由特定作者(或两者)匹配搜索的文档数,那么按聚合分组就特别好。内存中的属性更新也很方便,特别是对于立即删除的文章。


谢谢Garth。我看到了django search想要成为正式的django搜索,但我犹豫着使用它,因为我找不到任何文档!幸运的是,在Subversion中有一个我以前没有见过的自述文件,它使API看起来非常酷:

1
2
3
4
5
6
7
8
9
10
11
# 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")


我只是需要一个非常快速的解决方案,而不是为一个内部应用程序大惊小怪。

我发现这篇文章很快就把搜索添加到了django中,这对我来说非常有用!

显然,它缺乏像Haystack这样的实际项目的速度、可扩展性和特性,但是这个项目更容易设置,而且我不需要任何其他东西,除了关键字和搜索。


你可能想考虑让雅虎用他们自己的搜索服务(boss)来做所有的努力。以下是一篇很好的博客文章,引导您完成整个过程:http://www.peterkrantz.com/2008/yahoo-search-in-django/


你可能想看看django-solr搜索(又名"solango"),它附带了一些不错的文档来帮助你开始……


看起来这里的每个人都错过了德扬戈·沙皮

在对Django现有的所有搜索加载项进行快速评估之后,我发现这个加载项是最灵活和最容易使用的。这在一些地方是粗糙的边缘,但它仍然是在Django项目中使用Xapian搜索引擎的最佳方式。


我想我得向贾皮安大喊一声。

它是岩石固体……只需下拉一个震源分布并窥视内部即可。一流的代码,不是很多评论。

这仍然是一个年轻的软件项目,但我认为django社区应该把它的重量抛在这个项目后面。


如果你有大量的数据需要索引,或者你期望高流量,我建议使用一些外部搜索引擎,比如solr。这样,您就可以保持不共享的方法,并且能够独立地扩展站点组件。


如果你愿意使用第三方搜索引擎,我可以推荐雅虎老板和Django Bosssearch。

雅虎老板是一个付费服务,但它可以节省你在服务器上设置和维护其他搜索软件的费用。


我发现djoosh依赖于纯Python外部搜索引擎的呼啸声来很好地处理我的"python"大脑。


谢谢乔,

我们决定使用tsearch2和定制的Postgres适配器。tsearch2不需要额外的进程来运行,这很方便,因为我们在一个内存有限的网络派系主机上…这还没有完全完成,但似乎是一个很好的解决方案…