2017-04-26 117 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