我一直在阅读 Sphinx 搜索引擎和 Thinking Sphinx gem。在 TS文档中它说...
与许多其他搜索服务相比,Sphinx 有一个主要限制:您无法更新索引中单个文档的字段,而必须重新处理该索引的所有数据。
如果我理解正确,这意味着当用户添加或编辑某些内容时,更改不会反映在索引中。因此,如果他们添加一条记录,则在重建整个索引之前,它不会出现在搜索中。或者如果他们删除了一条记录,它会在搜索中出现,然后导致某种错误或令人沮丧的行为。
此外,在重建索引时,Sphinx 被关闭。因此,您的应用程序的搜索功能会定期离线(每小时一次,每隔几个小时一次),任何尝试进行搜索的人都会收到错误或“稍后再试”消息。
好的,显然这些在现实世界的应用程序中都是不可接受的。所以你几乎必须使用增量索引。
但显然您仍然需要定期关闭搜索引擎并进行完整索引...
打开增量索引并不会消除定期运行完整重新索引的需要,否则增量索引本身将增长到与核心索引一样大,这消除了保持独立的优势。它还会减慢您对更改模型记录的服务器的请求。
我真的不明白文档在这里说什么。也许有人可以帮助我。我认为增量索引的全部意义在于您不需要定期重建索引。只要数据发生变化,它就会立即更新。
因为每小时或每件事都重建索引会完全搞砸,对吧?