什么是最好的Django搜索应用程序?

时间:2008-09-10 19:09:15

标签: python django search search-engine

我正在构建一个需要搜索功能的Django项目,直到有django.contrib.search,我必须选择一个搜索应用。那么哪个最好? “最好的”我的意思是......

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

以下是我听过的一些应用程序,如果您知道有任何其他应用程序,请提出建议:

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

15 个答案:

答案 0 :(得分:101)

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

答案 1 :(得分:19)

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

潜在危害:

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

潜在利益:

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

答案 2 :(得分:18)

我正在寻找同样的事情,和很多其他人一样。我们希望很快就会添加 django.contrib.search

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

对我来说,大多数看起来都非常复杂,坦率地说,实施起来有点令人生畏。 我有兴趣了解你对这些的看法。

答案 3 :(得分:8)

我建议使用Sphinx进行全文搜索和聚合,django-sphinx非常适合生产使用。我们发现Sphinx是索引和搜索我们文档的资源最少且速度最快的方法,并且django-sphinx在sphinx客户端上是一个不错的包装器。

聚合组特别好,例如,如果要显示具有特定标记的文档或某个作者(或两者)与搜索匹配的文档数量。在内存中属性更新也很方便,特别是对于立即删除已删除的文章。

答案 4 :(得分:8)

djangosearch的Google代码页表示它已不再处于有效开发状态,并建议haystacksolango

答案 5 :(得分: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")

答案 6 :(得分:5)

我只需要一个非常快速的解决方案,对内部应用程序来说毫不费力。

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

显然它缺乏像Haystack这样的真实项目的速度,可扩展性和功能,但是这个更容易设置,除了关键字AND-search之外我什么都不需要。

答案 7 :(得分:3)

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

答案 8 :(得分:2)

看起来每个人都错过django-xappy

在快速评估Django的所有现有搜索插件后,我发现这个插件最灵活,最容易使用。在很少的地方边缘很粗糙,但它仍然是在Django项目中使用Xapian搜索引擎的最佳方式。

答案 9 :(得分:2)

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

答案 10 :(得分:1)

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

答案 11 :(得分:1)

我想我不得不向Djapian大声喊叫。

它坚如磐石......只需拉下源分布并窥视内部。顶级代码,没有太多评论......

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

答案 12 :(得分:0)

谢谢乔,

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

答案 13 :(得分:0)

我发现Djoosh依赖于纯python外部搜索引擎Whoosh,可以很好地与我的'Python'大脑配合使用。

答案 14 :(得分:0)

如果您愿意使用第三方搜索引擎,我可以推荐Yahoo BOSSdjango-bosssearch

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