Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Sphinx delta索引--仍然需要重建主索引吗?_Ruby On Rails_Ruby_Full Text Search_Sphinx_Thinking Sphinx - Fatal编程技术网

Ruby on rails Sphinx delta索引--仍然需要重建主索引吗?

Ruby on rails Sphinx delta索引--仍然需要重建主索引吗?,ruby-on-rails,ruby,full-text-search,sphinx,thinking-sphinx,Ruby On Rails,Ruby,Full Text Search,Sphinx,Thinking Sphinx,我一直在阅读Sphinx搜索引擎和思考Sphinx gem。在TS中它说 与许多其他搜索服务相比,Sphinx有一个主要的局限性:您无法更新索引中单个文档的字段,但必须重新处理该索引的所有数据 如果我理解正确,这意味着当用户添加或编辑某些内容时,索引中不会反映更改。因此,如果他们添加了一条记录,在重建整个索引之前,它不会出现在搜索中。或者,如果他们删除一条记录,它将在搜索中出现,然后导致某种错误或令人沮丧的行为 此外,重建索引时,斯芬克斯被关闭。因此,你的应用程序的搜索功能会定期离线(每小时一次

我一直在阅读Sphinx搜索引擎和思考Sphinx gem。在TS中它说

与许多其他搜索服务相比,Sphinx有一个主要的局限性:您无法更新索引中单个文档的字段,但必须重新处理该索引的所有数据

如果我理解正确,这意味着当用户添加或编辑某些内容时,索引中不会反映更改。因此,如果他们添加了一条记录,在重建整个索引之前,它不会出现在搜索中。或者,如果他们删除一条记录,它将在搜索中出现,然后导致某种错误或令人沮丧的行为

此外,重建索引时,斯芬克斯被关闭。因此,你的应用程序的搜索功能会定期离线(每小时一次,每几小时一次),任何试图进行搜索的人都会收到错误或“稍后再试”消息

好的,很明显,在现实世界的应用程序中,这些都是不可接受的。因此,您几乎必须使用增量索引

但显然你仍然需要定期关闭你的搜索引擎,做一个完整的索引

启用增量索引并不意味着不需要定期运行完整的重新索引,否则增量索引本身将变得与核心索引一样大,这就消除了将其分开的优势。它还会减慢对服务器的请求速度,从而更改模型记录

我真的不明白医生在说什么。也许有人能帮我。我认为增量索引的全部要点是,您不需要定期重建索引。只要数据发生变化,它就会立即更新

因为每小时或每件事都要重建索引,这完全是一团糟,对吧

如果我理解正确,那意味着 当用户添加或编辑某些内容时, 这一变化没有反映在报告中 指数所以,如果他们添加了一个记录 不会出现在搜索中,直到 重建整个索引。或者如果他们 删除一条记录,它将在 搜索,然后导致某种 错误或令人沮丧的行为。 此外,在重建斯芬克斯指数的过程中

您不需要重建索引,只需重新编制索引即可。这意味着-没有必要停止守护进程。只有在更改了索引的结构之后才需要重建,而这里的情况并非如此


对于第二部分——同样,您不需要重建索引,因此停止deamon是没有必要的。使用增量索引时,实际上有两个用于搜索的索引—主索引(应每隔一段时间重新编制一次索引)和增量索引(在对记录执行每个相关操作后刷新)。如果我理解正确,在重新索引主索引时(例如,通过cron任务),增量索引只是合并到主索引中,因此它不会占据那么多位置并保持快速。

在重新索引主索引时,会执行完整索引(即,增量不会以任何方式合并)。除此之外,你的评论很贴切。是的,它没有实际合并,这是一个糟糕的措辞。感谢您指出。另外,值得注意的是,在思考Sphinx时(尽可能多地)跟踪删除操作,而不需要增量索引。还要注意的是,每当您重新索引主索引时,您都需要重新索引增量。否则,在对增量重新编制索引之前,这两个索引中都会有条目(在主索引重新编制之后,实际上会将其清除)。该“增量索引本身将增长到与核心索引一样大”位绝对是错误的。每次执行实时更新/合并时,增量索引将替换为以前未编制索引的新数据。