我正在构建一个需要搜索功能的Django项目,直到有了django.contrib.search
,我必须选择一个搜索应用程序.那么哪个最好?"最好的"我的意思是......
易于安装/设置
有一个Django或至少Python友好的API
可以执行相当复杂的搜索
以下是我听过的一些应用程序,如果您知道任何其他应用程序,请建议其他人:
djangosearch
Django的狮身人面像
我还想避免使用第三方搜索引擎(如Google SiteSearch),因为我想索引的一些数据仅供网站成员使用,不应公开.
查看Haystack Search - 一个新的基于模型的搜索抽象层,目前支持Xapian,Solr和Whoosh.看起来它得到了很好的支持和记录.
Justin,我首先尝试djangosearch:Jacob Kaplan-Moss(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/
对我来说,大多数看起来都非常复杂,坦率地说,实施起来有点令人生畏.我有兴趣了解你对这些的看法.
我建议使用Sphinx进行全文搜索和聚合,django-sphinx足以用于生产.我们发现Sphinx是索引和搜索我们文档的资源最少且速度最快的方法,并且django-sphinx在sphinx客户端上是一个不错的包装器.
聚合组特别好,例如,如果要显示具有特定标记或某个作者(或两者)匹配搜索的文档数量.在内存中属性更新也很方便,特别是对于立即删除已删除的文章.
djangosearch的谷歌代码页表明它已不再处于活跃开发状态,并建议使用haystack或solango.
谢谢Garth.我曾经看到djangosearch希望成为官方的Django搜索,但我对使用它犹豫不决,因为我找不到任何文档!幸运的是,我在之前没见过颠覆的自述文件,它使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")
我只需要一个非常快速的解决方案,对内部应用程序来说不费吹灰之力.
我发现文章快速添加搜索到Django,这对我来说非常棒!
显然它缺乏像Haystack这样的真实项目的速度,可扩展性和功能,但是这个更容易设置,除了关键字AND-search之外我真的不需要任何其他东西.