旋转后不能立即合并 sphinx delta 索引?
Can't merge sphinx delta index immediately after rotating?
我注意到我的 delta 索引没有被合并到主索引中,在做了一些调查后发现当我尝试在旋转 delta 索引后立即将 delta 索引合并到主索引时会发生这种情况。
这是我在开发计算机 (Windows) 上 运行 使用的命令:
C:\Sphinx\bin\indexer.exe --config C:\wamp\www\path\to\sphinx\etc\sphinx_windows.conf my_delta_index --rotate && C:\Sphinx\bin\indexer.exe --config C:\wamp\www\path\to\sphinx\etc\sphinx_windows.conf --merge my_index my_delta_index --rotate
输出显示两个命令都执行成功,但项目没有出现在应该有的搜索中。
当我尝试 运行 该命令的第一部分时:
C:\Sphinx\bin\indexer.exe --config C:\wamp\www\path\to\sphinx\etc\sphinx_windows.conf my_delta_index --rotate
几秒钟后:
C:\Sphinx\bin\indexer.exe --config C:\wamp\www\path\to\sphinx\etc\sphinx_windows.conf --merge my_index my_delta_index --rotate
一切正常。
我在文档中找不到任何建议,但是在将增量索引合并到主索引之前,您是否必须等待一定时间?
--rotate
本质上是异步的 - 索引器构建索引的新版本,但只是 'tells' searchd 到 'activate' 它。 searchd 可以随意执行此操作。它可能立即生效,也可能需要几秒钟。
所以当'merge'发生时,很可能新索引还没有完成'activated';所以合并过程只是重新合并旧版本的增量。 (旧版本仍在使用,直到轮换完成)
不过也有可能是第二次轮换还没完成,searchd还没有加载完新合并的main,所以你还在搜索旧版本。
... 所以是的,您确实需要在 运行 之后等待 --rotate 样式重新索引,然后再对索引执行更多操作。没有内置的命令来监视进程,所有能做的就是观察 searchd 日志文件,或者观察索引的文件名,因为新旧交替。
我注意到我的 delta 索引没有被合并到主索引中,在做了一些调查后发现当我尝试在旋转 delta 索引后立即将 delta 索引合并到主索引时会发生这种情况。
这是我在开发计算机 (Windows) 上 运行 使用的命令:
C:\Sphinx\bin\indexer.exe --config C:\wamp\www\path\to\sphinx\etc\sphinx_windows.conf my_delta_index --rotate && C:\Sphinx\bin\indexer.exe --config C:\wamp\www\path\to\sphinx\etc\sphinx_windows.conf --merge my_index my_delta_index --rotate
输出显示两个命令都执行成功,但项目没有出现在应该有的搜索中。
当我尝试 运行 该命令的第一部分时:
C:\Sphinx\bin\indexer.exe --config C:\wamp\www\path\to\sphinx\etc\sphinx_windows.conf my_delta_index --rotate
几秒钟后:
C:\Sphinx\bin\indexer.exe --config C:\wamp\www\path\to\sphinx\etc\sphinx_windows.conf --merge my_index my_delta_index --rotate
一切正常。
我在文档中找不到任何建议,但是在将增量索引合并到主索引之前,您是否必须等待一定时间?
--rotate
本质上是异步的 - 索引器构建索引的新版本,但只是 'tells' searchd 到 'activate' 它。 searchd 可以随意执行此操作。它可能立即生效,也可能需要几秒钟。
所以当'merge'发生时,很可能新索引还没有完成'activated';所以合并过程只是重新合并旧版本的增量。 (旧版本仍在使用,直到轮换完成)
不过也有可能是第二次轮换还没完成,searchd还没有加载完新合并的main,所以你还在搜索旧版本。
... 所以是的,您确实需要在 运行 之后等待 --rotate 样式重新索引,然后再对索引执行更多操作。没有内置的命令来监视进程,所有能做的就是观察 searchd 日志文件,或者观察索引的文件名,因为新旧交替。