2017-04-26 79 views
0

我使用Sunspot Solr(2.2.7)在我們的應用中搜索和索引AR模型,但我們在這裏做了一些稍微不同的事情。實際的可索引內容存儲在序列化字段中,並且我已經擴展了Sunspot :: Adapters :: InstanceAdapter和Sunspot :: Adapters :: DataAccessor類來支持我們的用例並註冊這些適配器。太陽黑子Solr未被索引的新字段

我在配置/初始化/ sunspot.rb類中定義的可轉位字段和示例配置看起來像

Sunspot.setup(Office) do 
    time :published_at, trie: true 
    integer :id 
    text :name 
    integer :region_id 
    boolean :is_active 
    text :address 
    text :city 
    text :postal_area 
    string :postal_code 
    string :abbreviation 
    integer :person_ids, multiple: true 
    string :supported_locales, multiple: true 
    string :slug 
end 

似乎一切都致力於開發和生產(Ubuntu的16.04運行的Solr 6.4.2 )。

我遇到的問題發生在我需要向索引添加新字段並嘗試將此更改投入生產時。當我添加上面一行到Sunspot.setup阻止

integer :department_ids, multiple: true 

到辦公室的設置和重新編制索引,它的工作原理我的本地機器上,但是當我部署到生產環境,新的領域沒有得到已接。

我已經更新託管架構文件以包含新字段,但是在重新建模這些模型之後,當查詢查詢工具中的辦公室時,我仍然看不到新字段。

爲Office作爲回報樣本JSON響應看起來像:

{ 
    "id":"Office 1", 
    "type":["Office", "Model"], 
    "class_name":["Office"], 
    "published_at_dt":"2017-03-22T23:32:22Z", 
    "id_i":1, 
    "search_name_s":"atlanta", 
    "region_id_i":2, 
    "is_active_b":true, 
    "postal_code_s":"30309", 
    "abbreviation_s":"ATL", 
    "person_ids_im":[513, 
    571, 
    1392, 
    1722, 
    1723], 
    "supported_locales_sm":["en"], 
    "slug_s":"houston", 
    "name_text":["Houston"], 
    "address_text":["1 Main Street<br/>Suite 1"], 
    "city_text":["Houston"], 
    "postal_area_text":["TX"], 
    "_version_":1565750688671072256}, 

} 

我已經設置了LOG_LEVEL到DEBUG但SOLR更新語句並沒有告訴我很多。

SOLR Request (1.6ms) [ path=update parameters={} ] 

我試着進入生產Rails的控制檯,手動運行

Sunspot.remove_all!(Office) 

,然後運行我的指標任務,但仍然領域沒有得到回升。

我不確定如何進一步調試此問題。

是否需要對託管架構進行更改(我的conf目錄中沒有schema.xml,託管架構文件)。該字段在那裏定義,併爲該字段運行查詢,但返回0結果。

問題是我的初始化程序中的Sunspot.setup代碼需要Apache2和太陽黑子的完全停止以獲取我的更改?我也嘗試過,但沒有看到變化。

或者是因爲我沒有使用默認的Rails AR包含的問題,包括由於略有不同的使用情況我們有缺少的方法,我需要在我的適配器/可索引類中實現?

任何幫助,將不勝感激。

回答

0

因此,在爲什麼更新的太陽黑子配置沒有采取措施後,有人建議我檢查一下,如果春天在我們的生產環境中運行。出於某種原因,它一直在阻止新的太陽黑子配置重新初始化。殺死所有正在運行的Spring實例並重新部署應用程序後,新的更改被拾取並且事情似乎正在工作。