a arquitectura ideal é:
- text box no frontend que a partir de um certo threshold (talvez 3 caracteres) manda um request AJAX para o servidor com a substring já introduzida;
- no servidor recebes a string e ou procuras na base de dados (pouco eficiente) ou já tens os nomes dos clientes indexados numa framework de search (solr, lucene) e procuras aí (bastante eficiente). Retornas os resultados (clienteID, clienteName) para o cliente (no máximo 10, provavelmente);
- no cliente quando recebes o callback do AJAX crias um div/select/o-que-der-mais-jeito com uma entrada por resultado;
- quando carregas nessa entrada seleccionas com o nome do cliente e ficas com o id.