2017-03-16 106 views
0

我是Solr的新手,我試圖瞭解其在重新索引過程中的行爲。 我有一個批處理進程運行,從關係表中選擇數據並將其添加到Solr索引。Solr重新索引行爲

從我的理解閱讀有關Solr的,有兩種情況,當你需要做一個重新索引

案例1:當新行被插入到你的表(源數據) 案例2:當任何列類型發生變化,您必須相應地更改模式。

在案例1中舊數據是否保持可供用戶在重新索引發生時進行搜索?

模式更改過程中發生了什麼,因爲舊數據將不再與新模式匹配?什麼樣的行爲,當他們執行搜索將用戶體驗?

我在網上找不到任何明確的答案。任何澄清表示讚賞。

回答

0

案例1. Solr的標記文檔刪除,但它停留在指數,它增加了同一份文件ID的新文檔。所以,是的,直到新文檔提交之前數據纔可用。案例2.如果您更新架構,舊數據中的文件仍然可用,但任何已刪除的字段都將不可見,並且任何新字段都將丟失。如果你仔細想一想,索引字段只是一系列的標記,所以這些字段仍然是可搜索的,但是新的查詢分析和索引中的標記可能會出現令人驚訝的結果,評分也可能受到影響。基本上你的結果可能不一致。

舉個例子:假設你就一個字做一個語音過濾:福克斯和它產生的標記:FUX | foks在您的索引中。

然後您刪除拼音過濾器並鍵入fox - 將不會與您的索引中的內容匹配。

說你有另一場與波特施特默爾:索引術語被朵朵到:指數

您刪除PorterStemmer:指數仍將匹配,索引不會。

+0

對於案例2,如果該特定字段的類型由於模式更改而發生更改,並且該字段設置爲在搜索結果中顯示...結果將返回null,或者根本不返回該字段。 – vish

+0

這取決於字段類型。將基本類型從一個字符串改成一個整數會給你一個錯誤:SCHEMA-INDEX-MISMATCH。從字符串更改分析的一種方法,以不同的東西還是會拉字符串值回來,因爲基本型是一樣的。 –

+0

謝謝!說得通。 – vish