gpt4 book ai didi

java - 如何在不完全重新索引的情况下避免 sphinx 索引中的陈旧结果?

转载 作者:行者123 更新时间:2023-12-02 08:23:54 24 4
gpt4 key购买 nike

我在 Java 应用程序中使用 Sphinx(v. 0.99)。我还将它与 Rails 应用程序上的thinking_sphinx 插件一起使用。

对于 Java 应用程序,我尝试使用增量索引 - 我主要是从现有的 Rails 配置和应用程序行为中找出它。

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

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

到目前为止,这一切都与我的 Rails 应用程序相同 - 如果我使用搜索命令进行检查,Rails 应用程序也会在主索引中显示过时的副本。

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

我猜想thinking_sphinx插件正在以某种方式处理这个问题,或者我在某处有一些配置条目错误。

我已经浏览过thinking_sphinx源代码,看看它是否以某种特殊的方式处理这个问题,但我没有看到任何明显的东西。

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

我的(Java)sphinx配置是here .

最佳答案

我不是 Thinking_sphinx 或 Java 方面的专家,但是如果您希望重复的文档从索引的主要部分中消失,您可以使用 Sphinx Kill-list ( http://sphinxsearch.com/docs/current.html#conf-sql-query-killlist )。这正是为像您这样的情况而发明的。希望它会有所帮助。

关于java - 如何在不完全重新索引的情况下避免 sphinx 索引中的陈旧结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4913570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com