Django Haystack还是Sphinx用于简单搜索?

1 投票
1 回答
505 浏览
提问于 2025-04-18 16:36

我正在创建一个食物搜索功能。我希望用户能够在搜索框里输入食物名称,然后返回相关的结果。同时,我还想给某些词设置优先级,让它们更容易显示出来。例如,当搜索“橙子”时,结果中应该先显示水果,而不是果汁。

我还没找到在django中实现这个功能的最佳搜索方案。

请告诉我在这种情况下哪个方案更好。

1 个回答

2

我现在是 Django-SphinxQL 的维护者,这是一个在 Django 中使用 Sphinx 的实现。同时,我也是 Haystack 的 Xapian 后端的维护者。

我推荐使用 Haystack,原因如下:

  • Haystack 让你可以选择不同的后端,并且支持大多数搜索的标准功能(比如高亮显示),而且在 Django 的搜索引擎中已经经过了时间的考验。

  • Django-SphinxQL 目前还处于早期开发阶段(其他类似的实现,比如 Django-Sphinx 也停滞不前),只支持一些基本的功能。

我认为选择 Sphinx 搜索而放弃 Haystack(比如使用 Django-SphinxQL)的唯一理由是,如果你有一个特定的需求,Sphinx 在某些方面明显优于任何 Haystack 的后端。

举个例子,Sphinx 在 plain 索引中的索引速度非常快,但每次更新数据库时都需要重新索引所有内容。对我来说,这种设置非常方便,因为我用它来索引一个每天只更新一次的数据库。

撰写回答