2016-08-04 4 views
0

Я пытаюсь создать новый индекс в Алголии, который совпадает с моим первым индексом, но будет иметь разные данные из моего первого индекса. Я хочу иметь индекс контактов для NZ, а другой для AU.Данные индекса Algolia Restrict

Я использовал indexOnly($index_name) с условием внутри этой функции. Но он работает неправильно, и я не знаю, нужна ли эта функция.

Это, как я создаю его

class Contact extends Model { 

    use AlgoliaEloquentTrait; 

    protected $table = 'contacts'; 

    public $indices = ['contacts_local']; 

    /** ALGOLIA SETTINGS */ 

    public function getAlgoliaRecord() 
    { 
    return fractal()->item($this)->transformWith(new ContactTransformer)->toArray(); 
    } 

    private $index_name = 'contacts_local'; 

    public function indexOnly($index_name) { 
    return $this->contact_country == 'New Zealand'; 
    } 
} 

я запустить функцию переиндексации.

Вышеуказанный метод ничего не возвращает в моем contacts_local индексе. Все, что я делаю здесь неправильно?

Я использую ту же таблицу в своей базе данных, но эти два индекса будут иметь разные данные в зависимости от countrycontact. Возможно ли это в Алголии?

ответ

4

Я не уверен, что это выполнимо с интеграцией Algolia Laravel/Eloquent. Что бы сделать вместо этого:

  • нажимных все записи/контакты к тому же (уникальному) индексу
  • метки запись с их ассоциированными странами (в атрибуте _tags)
  • использование Algolia-х Secured API Keys для хэширования -generate некоторых ключей, которые ограничены конкретная страна, использующие tagFilters (https://www.algolia.com/doc/guides/search/filtering-faceting#filter-by-tag)

Это будет проще и быстрее, имеющие 1 индекс для каждой страны.

Смежные вопросы