@Duncanmoo(D7)で述べたように、カスタムコードでページまたはエンティティのインデックスを自分で再作成したい場合があるさまざまなユースケースがあります。
私の場合、関連するノードエンティティの更新は次のように実装されました。
$node = node_load($nid);
$node->field_search_rank[LANGUAGE_NONE][0]['value'] = $movie->order;
field_attach_presave('node', $node);
field_attach_update('node', $node);
entity_get_controller('node')->resetCache([$node->nid]);
ただし、フックはfield_attach_update()をリッスンしないため、search_api_entity_update()はトリガーされず、更新されたフィールドがSolrに再インデックス付けされました。
代わりに、この提案された追加のカスタムコードを適用して、各アイテムの再インデックスを完了しました。
$node = node_load($nid);
$node->field_search_rank[LANGUAGE_NONE][0]['value'] = $movie->order;
field_attach_presave('node', $node);
field_attach_update('node', $node);
entity_get_controller('node')->resetCache([$node->nid]);
// Re-index the node updates :
search_api_track_item_change('node', array($node->nid));
$combined_id = 'node/' . $node->nid;
search_api_track_item_change('multiple', array($combined_id));