Вот код для создания поля поиска:
var list = web.Lists["List1"];
var targetList = web.Lists["List2"];
var fieldName = list.Fields.AddLookup("My Lookup", targetList.ID, false);
var field = list.Fields.GetFieldByInternalName(fieldName) as SPFieldLookup;
field.LookupField = "SomeField";
field.Update();
Чтобы обновить поле поиска, вы установите для него идентификатор элемента в целевом списке.