Apr*_*che 2 python django search sphinx django-sphinx
我只是设置了django-sphinx,它工作得很漂亮.我现在能够搜索我的模型并获得惊人的结果.一个问题是我必须使用indexer命令手动构建索引.这意味着每次添加新内容时,我都必须手动命中命令行来重建搜索索引.这是不可接受的.
我可以创建一个自动运行索引器命令的cron作业,但这远非最佳.在cron再次运行之前,不会对新数据编制索引.此外,索引器将大多数时间不必要地运行,因为我的站点没有经常添加数据.
如何设置它,以便只要在可搜索的django模型中添加或修改数据,Sphinx索引就会自动重建?
构建搜索索引基本上有两种主要策略:
第一种策略具有明显的优势,即更接近实时,但可能在性能上有巨大的劣势.大多数具有内部索引器的数据库服务器都存在性能问题(或者缺少功能),例如,请参阅Jeff Atwood在他的博客文章中讨论SQL Server 2008中有关为stackoverflow添加第二台服务器的性能问题.
第二种策略不是实时的,但通常具有最佳性能,不幸的是,这也意味着,因为它不是内置的,所以必须以某种方式从外部调用.
显然你没有选择Sphinx,它是一个外部索引器.您必须从cron或其他一些调度机制调用sphinx索引器.
为了加快索引,只需从cron运行它.如果这会导致性能问题,那么您需要实现实时更新策略,该策略包括将新记录非常频繁地索引到增量索引中,然后定期将增量索引合并到主索引中.这将在Django外部完成,因此它不会影响django-sphinx中的任何内容.