Java 如何避免sphinx指数在没有完整re指数的情况下出现陈旧结果?

Java 如何避免sphinx指数在没有完整re指数的情况下出现陈旧结果?,java,sphinx,Java,Sphinx,我正在Java应用程序中使用Sphinx(v.0.99)。 我还将其与rails应用程序上的thinking_sphinx插件结合使用 对于Java应用程序,我尝试使用增量索引——我主要是从现有的rails配置和应用程序行为中了解到这一点 我在搜索的模型对象上有一个名为“delta”的布尔字段。 无论何时更新或创建记录,我都会将该增量字段设置为true。 我已经确认,sphinx配置中的增量和主索引查询根据该增量字段拾取正确的记录。 此外,每当更新或插入数据时,我的代码都会触发增量重新索引(我从

我正在Java应用程序中使用Sphinx(v.0.99)。 我还将其与rails应用程序上的thinking_sphinx插件结合使用

对于Java应用程序,我尝试使用增量索引——我主要是从现有的rails配置和应用程序行为中了解到这一点

我在搜索的模型对象上有一个名为“delta”的布尔字段。 无论何时更新或创建记录,我都会将该增量字段设置为true。
我已经确认,sphinx配置中的增量和主索引查询根据该增量字段拾取正确的记录。
此外,每当更新或插入数据时,我的代码都会触发增量重新索引(我从不删除数据)

更新记录后,它会正确地显示在增量索引中,但主索引中仍然存在过时的版本。 我可以通过手动运行“搜索”命令看到这一点

到目前为止,这一切与我的rails应用程序的工作原理相同——如果我使用search命令检查,rails应用程序也会在主索引中显示一个过时的副本

但是,如果我通过rails应用程序进行搜索,我就不会再看到那个陈旧的记录(即使命令行搜索显示它仍然存在)。 然而,如果我通过Java应用程序进行搜索,我仍然会在结果中看到过时的记录

我猜斯芬克斯插件是在某种程度上解决了这个问题,或者我在某个地方把一些配置条目搞错了

我已经通过thinking_sphinx源代码查看它是否以某种特殊方式处理了这个问题,但我没有看到任何明显的迹象

理想情况下,我希望我的Java应用程序中有相同的行为


我的(Java)sphinx配置是。

我不是思考sphinx或Java的专家,但如果您希望复制的文档从索引的主要部分消失,可以使用sphinx kill list()。这完全是为你这样的案子而发明的。 希望这会有帮助