如何在即时搜索小部件上设置Algolia searchableAttributes?

时间:2017-04-26 17:17:25

标签: ruby-on-rails search coffeescript multilingual algolia

我正在尝试设置可搜索的属性,以便通过locale动态控制这些属性。我试图按照algolia关于多语言支持的指南: https://www.algolia.com/doc/guides/search/multilingual-search/

示例显示在index:

上设置此值
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 个答案:

答案 0 :(得分:1)

searchableAttributes设置的不是查询参数。 JS Helper是客户端上的仅查询层。这意味着您无法使用JS Helper设置索引的设置。

您需要为多语言支持做的是为每种语言创建一个副本。每个副本都有一组不同的可搜索属性。然后使用instantsearch.js或JS Helper,您可以分别使用帮助器的sortBySelector小部件或setIndex方法切换索引。