我注意到我的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
一切正常。
我还没有在文档中找到任何暗示这一点的内容,但是在将delta索引合并到主索引之前,你是否需要等待一段时间?
答案 0 :(得分:1)
--rotate
本质上是异步的 - 索引器构建索引的新版本,但只是告诉'搜索并激活'它。 searchd可以做到这一点。它可能会立即生效,也可能需要很长时间。
所以当'合并'发生了,很可能新指数还没有被激活&#39 ;;所以合并过程,只是重新合并旧版本的delta。 (旧版本仍在使用,直到轮换完成)
但它也有可能是它没有完成的第二次旋转,搜索还没有完成加载新合并的主要部分,所以你仍然在搜索旧版本。
...是的,你需要在运行--rotate样式reindex之后再等待,然后再对索引做更多的事情。没有内置命令来监视进程,所有可以做的是查看searchd日志文件,或者查看索引的文件名,因为旧的和新的都是切换的。