我們需要控制生產solr索引中的數據,我們需要它與新開發兼容。理想情況下,我們希望在本地機器上模擬索引,使用它進行查詢solr並編寫單元測試以查詢更快的迭代。模擬和單元測試Solr和Lucene索引
RamDirectory is used in another question做類似的事情,但問題是從2年前。這example似乎只是這樣做(使用FSDirectory而不是RamDirectory)。這是解決這個問題的正確方法嗎?有沒有更好的方法來做到這一點?
我們想寫出這樣的測試:
setup mock index;
query mock index;
assert(stuff that should be true);
teardown mock index;
編輯:其他細節:
我們的想法是,我們將建立一個索引,有添加文檔的簡單方法,而無需索引和系統的其餘部分,除了可能保留在版本控制中的本地數據庫。在過去,我們生成了一個索引,當出現不兼容時,我們重新生成索引。
如果我們重新編制索引,我們會添加大量的開銷,並且假設索引器包含大量的數據處理邏輯(如將數據添加到可搜索的字段中,嘲笑索引器似乎不是一個好選擇從一個數據庫)。我們的索引器連接到一個外部數據庫,所以我們也需要支持。如上所述,我們可以擁有一個本地測試數據庫,幾乎沒有任何開銷。
一旦我們有一個測試分貝,我們需要建立一個索引,然後我們可以去掉second link above。問題在於,我們如何快速構建一個索引以便進行測試,例如1000個文檔的大小。
的問題,這是我們接下來需要保持我們的本地數據庫架構同步的生產模式。生產模式經常變化,這是一個問題。我們希望有一個足夠靈活的測試基礎架構來處理這個問題 - 到目前爲止,這種方法只是重建數據庫,而且每次都很慢並且會讓其他人感到厭煩!
你正在使用什麼數據庫......我的猜測是它的MySQL,它在慢速備份和恢復方面聲名狼借。因此,我們切換到Postgresql。 SQLServer也具有快速的備份/恢復功能。 –
甲骨文,它是相當優化 – nflacco
我們今天談論這一點,有一種可能性似乎只對數據庫執行SELECT *並將其加載到散列中,以便在本地從來沒有模式問題。列幾乎永遠不會被刪除,並且如果列缺失/未指定(用於創建文檔),單元測試應該可以正常工作。 – nflacco