2017-04-26 10 views
0

ロケールによって動的に制御できるように、検索可能な属性を設定しようとしています。私は、マルチLANGサポートの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ヘルパーは、クライアントの上にあるクエリのみのレイヤーです。つまり、JSヘルパーを使用してインデックスの設定を行うことはできません。

複数の言語をサポートするには、言語ごとに複製を作成する必要があります。各レプリカには検索可能な属性のセットが異なります。次に、instantsearch.jsまたはJSヘルパーを使用して、それぞれsortBySelectorウィジェットまたはsetIndexヘルパーのメソッドを使用してインデックスを切り替えることができます。

+0

これはもっと意味があります。私が今実行している現在の問題は、複製関係が消えていくことです。主索引を作成し、4つのロケール索引(各言語に1つ)を作成しました。 次に、レプリカタブのメインインデックスにロケールインデックスをレプリカとして設定します。メインインデックスにさらにデータをプッシュすると、ロケールレプリカは突然関連付けられなくなります。つまり、レプリカタブが突然「構成されていません」。私は何が欠けていますか? – Thomas

+1

将来の読者のために:データの索引作成にalgoliasearch-rails gemを使用している場合、 'add_replica'メソッドを使用して、' .reindex! 'コールが消去されるレプリカを確実に置き換えてください。 - [algolia rails gem replica docs](https://github.com/algolia/algoliasearch-rails#primaryreplica) – Thomas

関連する問題