2011-02-06 126 views
0

我在我的Java應用程序中使用Sphinx(v。0.99)。 我還將其與rails應用程序中的thinking_sphinx插件一起使用。如何避免在沒有完全重新索引的情況下導致獅身人面像索引失效?

對於Java應用程序,我試圖使用增量索引 - 我主要從現有的導軌配置和應用程序行爲中找出它。

我在我搜索的模型對象上有一個名爲'delta'的布爾字段。 每當我更新或創建一條記錄時,我將delta字段設置爲true。
我已經確認在我的獅身人面像配置中的增量和主索引查詢會根據該增量字段提取正確的記錄。
此外,無論何時更新或插入(我從不刪除數據),我的代碼都會觸發增量索引。

更新記錄後,它正確顯示在增量索引中,但當然過時的版本仍然在主索引中。 我可以通過手動運行'搜索'命令來查看。

到目前爲止,這一切與我的rails應用程序相同 - 如果我使用搜索命令進行檢查,rails應用程序也會在主索引中顯示一個陳舊的副本。然而,如果我通過我的rails應用程序搜索,我不會再看到那個陳舊的記錄(即使命令行搜索顯示它仍然存在)。 但是,如果我通過我的Java應用程序進行搜索,我仍會在結果中看到過時的記錄。

我猜不知道think_sphinx插件是以某種方式處理這個問題,或者我在某處有一些配置項輸入錯誤。

我已經通過thinking_sphinx源碼看看它是否以某種特殊的方式處理這個問題,但我沒有看到任何明顯的東西。

理想情況下,我想在我的Java應用程序中使用相同的行爲。

我的(Java)sphinx配置是here

回答

2

我不是thinking_sphinx或Java的專家,但是如果您希望重複文檔從索引的主要部分消失,您可以使用Sphinx殺戮列表(http://sphinxsearch.com/docs/current.html#conf-sql-query-killlist)。這是專爲像你這樣的案例發明的。 希望它會有所幫助。

+0

這已經很好地解決了我的問題,非常感謝。 – 2011-02-06 19:11:44

相關問題