2017-04-26 120 views
0

我想設置可搜索的屬性,以便這些可以通過區域設置動態控制。我試圖遵循algolia本指南多郎支持: https://www.algolia.com/doc/guides/search/multilingual-search/如何在即時搜索小部件上設置Algolia searchableAttributes?

的例子顯示了設置在指數該值:

Algolia.init_index('movies').set_settings({"searchableAttributes"=>["title_eng,title_fr,title_es"]}) 

但這不是我正在創建我的索引,可能是我遺漏了什麼?我也沒有在助手上使用set_settings方法。

我想設置這樣通過:

helper.setQueryParameter('searchableAttributes', searchable_terms_array) 
朝下面的咖啡腳本代碼塊的底部

searchable_terms_array = [ 
    'title_de' 
    'title_en' 
    'title_fr' 
] 

restricted_terms_array = [ 
    'title_' + current_locale 
] 

search = instantsearch(
    appId: 'MY-ID' 
    apiKey: 'MY_KEY' 
    indexName: 'my_index_' + rails_env 
    urlSync: { 
    threshold: 300 
    getHistoryState: -> 
     { turbolinks: true } 
    } 
    searchFunction: (helper) -> 
    query = search.helper.state.query 
    # Here is my attempt, doesn't seem to work 
    helper.setQueryParameter('searchableAttributes', searchable_terms_array) 
    # is there another way to set above line? 
    helper.setQueryParameter('restrictSearchableAttributes', restricted_terms_array) 
    videos.helper.setQuery query 
    videos.helper.search() 
    helper.search() 
    return 
) 

終於找到

,可能要注意,我設置的是重要的通過Algolia管理控制檯的主要可搜索屬性,但假設我應該設置其他語言相關字段,以便通過API進行搜索。

回答

1

searchableAttributes設置不是查詢參數。 JS Helper是客戶端上的查詢唯一層。這意味着你不能使用JS Helper設置索引的設置。

您需要爲多語言支持做什麼是創建每種語言的副本。每個副本都會有一組不同的可搜索屬性。然後使用instantsearch.js或JS Helper,您可以分別使用幫助程序的sortBySelector小部件或setIndex方法切換索引。

+0

這使得更多的意義。目前我遇到的問題是副本關係不斷消失。我創建了主索引,創建了4個區域索引(每種語言一個索引)。 接下來,我將區域設置索引設置爲副本選項卡下主索引上的副本。如果我將更多數據推送到主索引,區域設置副本突然不再關聯,即副本選項卡突然「未配置」。我錯過了什麼? – Thomas

+1

對於未來的讀者:如果您使用algoliasearch-rails gem來索引您的數據,您將希望使用'add_replica'方法來確保替換'.reindex!'調用消除的副本 - [algolia rails gem replica文檔(https://github.com/algolia/algoliasearch-rails#primaryreplica) – Thomas