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

时间:2020-03-05 18:51:00  来源:igfitidea点击:

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

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

这是我听说过的一些应用程序,如果我们知道其中任何一个,请建议其他应用程序:

  • djangosearch
  • django-狮身人面像

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

解决方案

回答

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

潜在危险:

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

潜在的好处:

  • 长期目标是使它成为django.contrib.search

回答

谢谢加思。我曾见过djangosearch想成为正式的Django搜索,但由于无法找到任何文档,我犹豫使用它!幸运的是,在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")

回答

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

回答

我在寻找同一件事,就像其他许多人一样。希望很快会添加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/

对我来说,大多数看起来很复杂,坦率地说,实施起来有些艰巨。
我很想了解我们对这些的看法。

回答

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

如果我们想显示有多少个带有特定标签或者由某个作者(或者二者兼有)匹配的文档,则按聚合分组特别好。内存中的属性更新也很方便,尤其是对于立即删除已删除的文章而言。

回答

谢谢乔,

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

回答

似乎这里的每个人都错过了django-xappy

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

回答

我发现Djoosh依靠纯Python外部搜索引擎Whoosh与我的" Python"大脑很好地配合。

回答

我们可能想看一下Django Solr搜索(又名" Solango"),它附带了一些不错的文档来入门...

回答

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

回答

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

回答

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

回答

我想我将不得不向贾比安大喊大叫。

坚如磐石...只需拉下源代码分布并查看内部即可。一流的代码,评论不多。

它仍然是一个年轻的软件项目,但是我认为django社区应该将它的精力放在这个项目上。