2009-11-23 106 views
4

我一直在阅读狮身人面像搜索引擎和思考狮身人面像宝石。在TS docs它说...狮身人面像三角洲索引 - 仍然需要重建主索引?

狮身人面像有一个主要的限制时相比很多其他搜索服务:你不能更新[的]在索引单个文档的领域,但必须重新处理该索引的所有数据。

如果我理解正确的话,当用户添加或编辑的东西,变化不会反映在指数手段。因此,如果他们添加一条记录,它将不会出现在搜索中,直到整个索引被重建。或者如果他们删除了一条记录,它会出现在搜索中,然后导致某种错误或令人沮丧的行为。

此外,重建索引Sphinx时关闭。因此,您的应用程序的搜索功能会定期关闭(每小时一次,每几小时一次),任何尝试搜索的用户都会收到错误消息或“稍后尝试”消息。

好的,在真实世界的应用程序中显然没有什么是可以接受的。所以你几乎不得不使用增量索引。

但很显然,你仍然需要定期关闭您的搜索引擎,并做了充分的索引...

打开增量索引不会删除需要定期运行完全重新索引,否则三角洲指数本身将会变得和核心指数一样大,这就消除了保持分离的优势。它还会减慢对服务器的更改模型记录的请求。

我真的不明白这里的文档是什么意思。也许有人可以帮助我。我认为三角洲索引的整个点是你不需要需要定期重建索引。只要数据发生变化,它就会立即更新。

因为重建索引每小时或每一件事都会被搞砸了,对吧?

+0

“三角洲指数本身将变得和核心指数一样大”,这一点绝对是错误的。每次进行实时更新/合并时,增量索引将被替换为新的先前未索引的数据。 – 2009-11-25 00:54:49

回答

11

如果我理解正确的话,这意味着 当用户添加或编辑的东西, 的变化不会反映在 指数。所以如果他们添加一条记录, 将不会出现在搜索中,直到 整个索引被重建。或者如果他们删除了一条记录,它会在 搜索中出现,然后导致某种 错误或令人沮丧的行为。 此外,重建索引Sphinx时关闭。 ...

你不需要重建索引 - 只需重新索引它们。这意味着 - 不需要停止守护进程。只有在改变索引的结构之后才需要重建 - 而这种情况并非如此。

对于第二部分 - 再次,你不重建索引,ergo停止deamon是没有必要的。使用增量索引时,实际上有两个用于搜索的索引 - 主索引(应重新索引一次)和增量索引(在索引的每个相关操作后刷新)。如果我理解正确,当重新索引主索引(例如。通过cron任务),delta索引简单地合并到主索引中,所以它不会占用太多的地方并保持快速。

+2

当重新索引主索引时,会执行完整索引(即,未以任何方式合并该增量)。除此之外,您的评论是真实的。 – 2009-11-23 11:48:09

+0

是的,它没有物理合并,这是一个错误的措辞。感谢您指出。 – 2009-11-23 12:16:02

+0

另外,值得注意的是 - 思维狮身人面像中的删除操作(尽可能多的)不需要增量索引。 – pat 2009-11-24 01:33:01

相关问题