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

How can I set Algolia searchableAttributes on an instantsearch widget?

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

示例显示在索引上设置此值:

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 将其他语言相关字段设置为可搜索。

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

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