What's the best Django search app?
我正在构建一个需要搜索功能的Django项目,在出现
- 易于安装/设置
- 有一个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不需要额外的进程来运行,这很方便,因为我们在一个内存有限的网络派系主机上…这还没有完全完成,但似乎是一个很好的解决方案…